从jstl中的map中获取值

时间:2009-12-11 08:01:54

标签: jsp foreach jstl

我的jsp页面上有以下代码:

<c:out value="${items}" /><br />

<c:forEach items="${items}" var="item">
     1. <c:out value="${item.key}" /><br />
     2. <c:out value="${item.key eq 70}" /><br />
     3. <c:out value="${items[70]}" /><br />
     4. <c:out value="${items[item.key]}" /><br />
</c:forEach>

它产生以下输出

{70=true}
1. 70
2. true
3.
4. true 

而我无法弄清楚为什么3.是空的。有什么想法吗?

地图的类型为Map<Integer, Boolean>

1 个答案:

答案 0 :(得分:3)

基本上,autoboxing将Integer对象放入Map中。

map.put(new Integer(0), "myValue")

EL将0评估为Long,因此寻找Long作为地图中的关键字。 即它评估:

map.get(new Long(0))

由于Long永远不会等于Integer对象,因此它不会在地图中找到该条目。 简而言之就是这样。

参考论坛http://forums.sun.com/thread.jspa?messageID=9702932#9702932