一尘不染

使用JSTL遍历List和Map的元素 标签

jsp

如果我有一个JSF支持bean返回一个ArrayList类型的对象,则我应该能够使用它<c:foreach>来遍历列表中的元素。每个元素都包含一个地图,尽管这里已经回答了如何通过JSTL访问地图内容的问题,但是如果我传递了此类地图的数组,我将找不到如何遍历它们并仍然使用JSTL访问地图内容的问题。
。有一些文档引用了简单的迭代器,但没有引用那些本身就是地图的迭代器。

如果有人可以给我一个简单的示例,说明如何在JSP中迭代Java列表,我将不胜感激。标记


阅读 340

收藏
2020-06-08

共1个答案

一尘不染

您的上一个主题已经回答了。但是好,这又是:

假设${list}指向List<Object>,则以下

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

基本上与“普通Java”中的以下内容相同:

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

如果您有List<Map<K, V>>,那么以下内容

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

基本上与“普通Java”中的以下内容相同:

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

keyvalue在这里没有特殊的方法左右。它们 实际上
Map.Entry对象的获取方法(单击蓝色Map.Entry链接以查看API文档)。在EL(表达式语言)中,您可以使用.点运算符使用“属性名称”(不带get前缀的getter方法名称)来访问getter方法,所有这些都仅符合Javabean规范。

就是说,您确实需要清理上一个主题中的“答案”,因为它们会增加问题的噪音。 另请阅读我在您的“答案”中发布的评论。

2020-06-08