将 <c:forEach> 与 HashMap 一起使用 [重复]
Posted
技术标签:
【中文标题】将 <c:forEach> 与 HashMap 一起使用 [重复]【英文标题】:Use <c:forEach> with HashMap [duplicate] 【发布时间】: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 实现。
谢谢, 乔纳斯。
【问题讨论】:
【参考方案1】:是的,这是完全可以接受的。
当您使用<c:forEach>
迭代Map
时,迭代中的每个项目都是Map.Entry
的一个实例。所以给出你的例子:
<c:forEach var="type" items="$types">
Key is $type.key
Value is $type.value
</c:forEach>
【讨论】:
我发现很难的一件事是您不能在第二个<c:foreach>
循环中重用相同的变量。您需要提供一个不同的名称。【参考方案2】:
它有效,您将在循环中使用 type.key
和 type.value
。
【讨论】:
以上是关于将 <c:forEach> 与 HashMap 一起使用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java servlet 将Map传到jsp中,通过<c:forEach >怎么将map中的值读取到?