相关疑难解决方法(0)

EL通过Integer键访问映射值

我有一个由Integer键入的Map.使用EL,我如何通过其键访问值?

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
Run Code Online (Sandbox Code Playgroud)

我认为这会有效,但它没有(地图已经在请求的属性中):

<c:out value="${map[1]}"/>
Run Code Online (Sandbox Code Playgroud)

跟进:我追查了问题.显然${name[1]},使用数字进行地图查找Long.我想通了这一点,当我换HashMapTreeMap和收到的错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Run Code Online (Sandbox Code Playgroud)

如果我将地图更改为:

Map<Long, String> map = new HashMap<Long, String>();
map.put(1L, "One");
Run Code Online (Sandbox Code Playgroud)

然后${name[1]}返回"一".那是什么?为什么<c:out>将数字视为一个长数.对我来说似乎违反直觉(因为int比长期更常用).

所以我的新问题是,是否有EL符号通过Integer值访问地图?

java jsp jstl el

85
推荐指数
3
解决办法
15万
查看次数

标签 统计

el ×1

java ×1

jsp ×1

jstl ×1