使用变量作为键访问EL中的映射值

时间:2012-09-20 17:41:33

标签: jsp el

我在EL中Map${map},我试图使用一个键来获取它的值,该键本身也是一个值为{${key}的EL变量"1000" 1}}。

使用${map["1000"]}有效,但${map["$key"]}不起作用。我做错了什么?如何使用变量作为键来获取Map值?

5 个答案:

答案 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)

我认为你应该访问你的地图:

${map.key}

并查看一些关于jstl的教程,例如12(有点过时,但仍然有效)