使用JSTL <c:forEach>标记遍历List和Map的元素
如果我有一个JSF支持bean返回一个ArrayListtypes的对象,我应该可以使用<c:foreach>
遍历列表中的元素。 每个元素都包含一个映射,尽pipe如何通过JSTL访问映射内容的问题已经在这里得到解答,如果我传递了这样的映射数组,我无法find如何遍历它们,仍然使用JSTL访问映射内容。 有文档指的是简单的迭代器,但不是那些项目本身就是映射的文档。
如果任何人都可以给我一个简单的例子,说明如何在JSP中迭代Java List,那么我将非常感激。 标记
马克,这已经在你之前的话题中得到了回答。 但是,好的,这里又是:
假设${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
在这里不是特别的方法。 它们实际上是Map.Entry
对象的getter方法(点击蓝色的Map.Entry
链接查看API文档)。 在EL(expression式语言)中,您可以使用.
点运算符使用“属性名称”(getter方法名称不带get
前缀)来访问getter方法,所有这些都只是根据Javabean规范。
也就是说,你真的需要清理你之前话题中的“答案”,因为它们增加了噪音。 也请阅读我在“答案”中发表的评论。
尝试这个
<c:forEach items="${list}" var="map"> <tr> <c:forEach items="${map}" var="entry"> <td>${entry.value}</td> </c:forEach> </tr> </c:forEach>