如果我有一个JSF支持bean返回一个ArrayList类型的对象,我应该能够使用<c:foreach>
迭代列表中的元素。每个元素都包含一个地图,虽然如何通过JSTL访问地图内容的问题已经回答here,如果我传递了一系列这样的地图,我找不到如何迭代它们并仍然访问使用JSTL映射内容。有文档引用了简单的迭代器,但没有引用那些项本身就是映射的文档。
如果有人能给我一个简单的例子来说明如何在JSP中迭代java List我会非常感激。 标记
答案 0 :(得分:109)
马克,这已在您的previous topic中得到解答。但好的,这里又是:
假设${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());
}
}
key
和value
这里不是特殊方法。它们是{strong>实际 getter方法Map.Entry
对象(点击蓝色Map.Entry
链接查看API文档)。在EL(表达式语言)中,您可以使用.
点运算符来访问使用“属性名称”(不带get
前缀的getter方法名称)的getter方法,所有这些都只是根据Javabean规范。
那就是说,你真的需要清理上一个主题中的“答案”,因为它们会给问题增加噪音。另请阅读我在“答案”中发布的评论。
答案 1 :(得分:0)
试试这个
<c:forEach items="${list}" var="map">
<tr>
<c:forEach items="${map}" var="entry">
<td>${entry.value}</td>
</c:forEach>
</tr>
</c:forEach>