使用JSTL <c:forEach>标记迭代List和Map的元素

vol*_*vox 51 foreach jsp jstl list hashmap

如果我有一个JSF支持bean返回一个ArrayList类型的对象,我应该可以<c:foreach>用来迭代列表中的元素.每个元素都包含一个地图,虽然这里已经回答了如何通过JSTL访问地图内容的问题,如果我传递了这样的地图数组,我找不到如何迭代它们仍然使用JSTL访问地图内容.有文档引用简单的迭代器,但不是那些项目本身就是映射的文档.

如果有人能给我一个简单的例子来说明如何在JSP中迭代java List我会非常感激.标记

Bal*_*usC 115

马克,这已在前一个主题中得到解答.但好的,这又是:

假设${list}指向a List<Object>,则接下来

<c:forEach items="${list}" var="item">
    ${item}<br>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

与"普通Java"中的内容基本相同:

for (Object item : list) {
    System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)

如果你有一个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>
Run Code Online (Sandbox Code Playgroud)

与"普通Java"中的内容基本相同:

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

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

也就是说,你真的需要清理上一个主题中的"答案",因为它们会给问题增加噪音.另请阅读我在"答案"中发布的评论.

  • 澄清:您不需要*任何*声誉来删除您自己的答案.你**只是**需要注册. (2认同)