如果我有一个JSF支持bean返回一个ArrayList类型的对象,则我应该能够使用它<c:foreach>来遍历列表中的元素。每个元素都包含一个地图,尽管这里已经回答了如何通过JSTL访问地图内容的问题,但是如果我传递了此类地图的数组,我将找不到如何遍历它们并仍然使用JSTL访问地图内容的问题。 。有一些文档引用了简单的迭代器,但没有引用那些本身就是地图的迭代器。
<c:foreach>
如果有人可以给我一个简单的示例,说明如何在JSP中迭代Java列表,我将不胜感激。标记
您的上一个主题已经回答了。但是好,这又是:
假设${list}指向List<Object>,则以下
${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>>,那么以下内容
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>
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在这里没有特殊的方法左右。它们 实际上 是Map.Entry对象的获取方法(单击蓝色Map.Entry链接以查看API文档)。在EL(表达式语言)中,您可以使用.点运算符使用“属性名称”(不带get前缀的getter方法名称)来访问getter方法,所有这些都仅符合Javabean规范。
key
value
Map.Entry
.
get
就是说,您确实需要清理上一个主题中的“答案”,因为它们会增加问题的噪音。 另请阅读我在您的“答案”中发布的评论。