使用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()); } } 

keyvalue在这里不是特别的方法。 它们实际上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>