【问题标题】:Iterate over elements of List and Map using JSTL <c:forEach> tag使用 JSTL <c:forEach> 标签遍历 List 和 Map 的元素
【发布时间】:2011-01-10 01:22:44
【问题描述】:

如果我有一个 JSF 支持 bean 返回一个 ArrayList 类型的对象,我应该能够使用 &lt;c:foreach&gt; 来迭代列表中的元素。每个元素都包含一个地图,虽然关于如何通过 JSTL 访问地图内容的问题已得到解答 here,但如果我传递此类地图的数组,我无法找到如何迭代它们并仍然访问地图内容使用 JSTL。有一些文档提到了简单的迭代器,但没有提到那些项目本身就是映射的迭代器。

如果有人能给我一个简单的例子,说明如何在 JSP 中迭代 java 列表,我将不胜感激。 标记

【问题讨论】:

    标签: list jsp foreach hashmap jstl


    【解决方案1】:

    马克,您的previous topic 已经回答了这个问题。但是好的,又来了:

    假设${list}指向List&lt;Object&gt;,则如下

    <c:forEach items="${list}" var="item">
        ${item}<br>
    </c:forEach>
    

    与“普通Java”中的以下内容基本相同:

    for (Object item : list) {
        System.out.println(item);
    }
    

    如果您改为使用List&lt;Map&lt;K, V&gt;&gt;,则如下

    <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(表达式语言)中,您可以使用 . 点运算符通过“属性名称”(不带 get 前缀的 getter 方法名称)访问 getter 方法,所有这些都符合 Javabean 规范。

    也就是说,您确实需要清理上一个主题中的“答案”,因为它们会增加问题的噪音。还请阅读我在您的“答案”中发布的 cmets。

    【讨论】:

    • 我很想清理它们,但没有删除按钮,并且编辑页面的完整参考链接上的 grep 'delete' 没有返回任何内容。请让我知道如何删除流浪汉。
    • 可能是因为您的信誉低,您无法删除。你现在能做的最好的事情是投票给真正的答案(按答案左侧的顶部三角形)并保持原样,以便真正的答案排列得更高在列表中。要了解有关 Stackoverflow 的更多信息,请阅读顶部栏中的“关于”和“常见问题解答”链接 :)
    • 这是因为我的声望低。但我认为我无法删除自己的答案这一事实有点蹩脚。
    • 您还需要注册您的帐户!另请参阅meta.stackexchange.com/questions/37183/…。此外,根据常见问题解答,您接受问题的答案可获得 2 分(通过按下您要接受的答案左侧的白色大复选标记 - 使其变为绿色),您将获得 10您根据自己的问题和答案获得的每一次赞成票都会获得积分。
    • 澄清一下:您不需要 任何 声誉来删除自己的答案。您只需需要注册。
    【解决方案2】:

    试试这个

    <c:forEach items="${list}" var="map">
        <tr>
            <c:forEach items="${map}" var="entry">
    
                <td>${entry.value}</td>
    
            </c:forEach>
        </tr>
    </c:forEach>
    

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 2018-03-22
      • 1970-01-01
      • 2013-01-15
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多