ChatGPT解决这个技术问题 Extra ChatGPT

Iterate over elements of List and Map using JSTL <c:forEach> tag

If I have a JSF backing bean return an object of type ArrayList, I should be able to use <c:foreach> to iterate over the elements in the list. Each element contains a map and although the question of how to access the map content through JSTL has been answered here, if I pass an array of such maps, I can't find how to iterate over them and still access the map content using JSTL. There's documentation which refers to simple iterators but not to those whose items are themselves maps.

If anyone can give me a simple example of how a java List is iterated over in JSP I'd be massively appreciative. Mark


C
Community

Mark, this is already answered in your previous topic. But OK, here it is again:

Suppose ${list} points to a List<Object>, then the following

<c:forEach items="${list}" var="item">
    ${item}<br>
</c:forEach>

does basically the same as as following in "normal Java":

for (Object item : list) {
    System.out.println(item);
}

If you have a List<Map<K, V>> instead, then the following

<c:forEach items="${list}" var="map">
    <c:forEach items="${map}" var="entry">
        ${entry.key}<br>
        ${entry.value}<br>
    </c:forEach>
</c:forEach>

does basically the same as as following in "normal Java":

for (Map<K, V> map : list) {
    for (Entry<K, V> entry : map.entrySet()) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue());
    }
}

The key and value are here not special methods or so. They are actually getter methods of Map.Entry object (click at the blue Map.Entry link to see the API doc). In EL (Expression Language) you can use the . dot operator to access getter methods using "property name" (the getter method name without the get prefix), all just according the Javabean specification.

That said, you really need to cleanup the "answers" in your previous topic as they adds noise to the question. Also read the comments I posted in your "answers".


I'd love to clean them up, but there isn't a delete button and grep 'delete' on the full reference link of the edit page returns nothing. do please let me know how i can delete the bum amswers.
Maybe it's due to your low reputation that you're unable to delete. Best what you could do right now is to upvote the real answers (press the top triangle at the left hand side of the answer) and leave your answers as-is, so that the real answers get arranged higher in the list. To learn more about Stackoverflow, read the "about" and "faq" links at the top bar :)
It is because of my low rep. but i think the fact i can't delete my own answers is a bit lame.
You also need to register your account! Also see meta.stackexchange.com/questions/37183/…. Further on, as per the FAQ, you get 2 points for accepting an answer on your question (by pressing the big white checkmark on left hand side of the answer you'd like to accept -so that it turns green) and you get 10 points for every upvote you earn on your own questions and answers.
To clarify: you don't need any reputation to delete your own answers. You just need to register.
d
ddb

try this

<c:forEach items="${list}" var="map">
    <tr>
        <c:forEach items="${map}" var="entry">

            <td>${entry.value}</td>

        </c:forEach>
    </tr>
</c:forEach>

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now