17

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

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

4

5 回答 5

22

$不是变量名的开始,它表示表达式的开始。您应该使用${map[key]}来访问keymap中的属性map

您可以在带有GET参数的页面上尝试它,例如使用以下查询字符串?whatEver=something

<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>

这将输出:

whatEver: something

请参阅:https ://stackoverflow.com/tags/el/info并滚动到“大括号表示法”部分。

于 2012-09-20T20:31:13.630 回答
5

我以前遇到过这个问题。这通常发生在键不是字符串时。修复方法是在使用键从映射中获取值之前将键转换为字符串

像这样的东西:

<c:set var="keyString">${someKeyThatIsNotString}</c:set>

<c:out value="${map[keyString]}"/>

希望有帮助

于 2016-05-24T07:04:03.477 回答
1

您可以将键值放在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']}"/>
于 2014-07-23T15:22:05.507 回答
0

我的五分钱。现在我正在使用 EL 3.0 (jakarta impl),我可以使用三种方式访问​​地图值:

 1. ${map.someKey}
 2. ${map['someKey']}
 3. ${map[someVar]} //if someVar == 'someKey'
于 2020-09-22T10:35:32.327 回答
-4

我认为您应该访问您的地图,例如:

${map.key}

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

于 2012-09-20T18:03:42.063 回答