【问题标题】:Use <c:forEach> with HashMap [duplicate]将 <c:forEach> 与 HashMap 一起使用 [重复]
【发布时间】:2011-01-13 17:33:54
【问题描述】:

我有一个将 servlet 属性设置为 HashMap 对象的 java 类:

request.setAttribute("types", da.getSecurityTypes());

其中request 是一个HttpServletRequest 对象,da.getSecurityTypes() 返回一个HashMap 对象。

有没有办法使用 c:foreach 或其他一些 JSTL 标记来遍历 HashMap 集合?

我在想:

 <c:forEach var="type" items="${types}">
                 ...
     </c:forEach>

或者如果不能完成,如何制作自定义标签来处理这个?

在我的 JSP 页面中使用 Java 代码是我最后的手段,我想知道这是否可以通过 JSTL 实现。

谢谢, 乔纳斯。

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    是的,这是完全可以接受的。

    当您使用&lt;c:forEach&gt; 迭代Map 时,迭代中的每个项目都是Map.Entry 的一个实例。所以给出你的例子:

    <c:forEach var="type" items="${types}">
       Key is ${type.key}
       Value is ${type.value}
    </c:forEach>
    

    【讨论】:

    • 我发现很难的一件事是您不能在第二个&lt;c:foreach&gt; 循环中重用相同的变量。您需要提供一个不同的名称。
    【解决方案2】:

    它有效,您将在循环中使用 type.key 和 type.value。

    【讨论】:

      猜你喜欢
      • 2021-03-30
      • 2023-03-28
      • 2017-04-20
      • 2013-10-14
      • 2013-08-01
      • 2020-05-05
      • 2017-08-16
      • 2017-06-21
      • 2018-11-18
      相关资源
      最近更新 更多