将<c:foreach>与HashMap一起使用</c:foreach>

时间:2010-02-05 22:29:41

标签: java jsp jstl

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

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是否可以实现这一点。

谢谢, 纳斯。

2 个答案:

答案 0 :(得分:109)

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

当您使用<c:forEach>迭代Map时,迭代中的每个项目都是Map.Entry的实例。所以举个例子:

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

答案 1 :(得分:5)

一切正常,您可以在循环中使用type.keytype.value