【问题标题】:fetching values from map in jstl从jstl中的地图获取值
【发布时间】:2009-12-11 08:01:54
【问题描述】:

我的 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&lt;Integer, Boolean&gt;

【问题讨论】:

  • map中的key有哪些类型? IntegerLongByteCharacater,什么?

标签: jsp foreach jstl


【解决方案1】:

基本上,自动装箱会将 Integer 对象放入 Map。

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

EL 将 0 评估为 Long,因此会在 Map 中寻找 Long 作为键。 即它评估:

map.get(new Long(0))

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

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

【讨论】:

  • 解决方案:改用Map&lt;Long, Boolean&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
相关资源
最近更新 更多