最佳答案
我有一个由整数键控的映射。使用 EL,我如何通过它的键访问一个值?
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
我原以为这会有用,但实际并非如此(map 已经在请求的属性中) :
<c:out value="${map[1]}"/>
跟进: 我找到了这个问题。显然,${name[1]}
使用数字 Long
进行地图查找。当我将 HashMap
改为 TreeMap
并接收到错误时,我明白了这一点:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
如果我把地图改成:
Map<Long, String> map = new HashMap<Long, String>();
map.put(1L, "One");
然后 ${name[1]}
返回“1”。这是怎么回事?为什么 <c:out>
把一个数字当作一个长的。对我来说似乎有违直觉(因为 int 比 long 更常用)。
因此,我的新问题是,是否存在一个 EL 符号来通过 Integer
值访问映射?