我的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>
答案 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