我在EL中Map
为${map}
,我试图使用一个键来获取它的值,该键本身也是一个值为{${key}
的EL变量"1000"
1}}。
使用${map["1000"]}
有效,但${map["$key"]}
不起作用。我做错了什么?如何使用变量作为键来获取Map
值?
答案 0 :(得分:21)
$
不是变量名的开头,它表示表达式的开头。您应该使用${map[key]}
访问地图key
中的媒体资源map
。
您可以在包含GET
参数的网页上使用以下查询字符串进行尝试,例如?whatEver=something
<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>
这将输出:
whatEver: something
请参阅:https://stackoverflow.com/tags/el/info并滚动到“Brace notation”部分。
答案 1 :(得分:4)
我以前遇到过这个问题。当密钥不是String时,通常会发生这种情况。修复是在使用键从地图中获取值之前将键转换为String
这样的事情:
<c:set var="keyString">${someKeyThatIsNotString}</c:set>
<c:out value="${map[keyString]}"/>
希望有所帮助
答案 2 :(得分:2)
您可以将键值放在Java
侧的地图中,并使用JSTL
页面上的JSP
访问相同内容,如下所示:
之前的java 1.7:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Java 1.7及以上版本:
Map<String, String> map = new HashMap<>();
map.put("key","value");
JSP代码段
<c:out value="${map['key']}"/>
答案 3 :(得分:0)
我的五分钱。现在我正在使用EL 3.0(jakarta impl),可以使用以下三种方式访问地图值:
1. ${map.someKey}
2. ${map['someKey']}
3. ${map[someVar]} //if someVar == 'someKey'
答案 4 :(得分:-4)