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

use*_*001 16 jsp el

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

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

Jas*_*ies 21

$不是变量名的开头,它表示表达式的开头.您应该使用${map[key]}访问key地图中的属性map.

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

<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>
Run Code Online (Sandbox Code Playgroud)

这将输出:

whatEver: something
Run Code Online (Sandbox Code Playgroud)

请参阅:https://stackoverflow.com/tags/el/info并滚动到"Brace notation"部分.


小智 5

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

像这样的东西:

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

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

希望有帮助


Nic*_*col -4

我认为你应该访问你的地图,如下所示:

${map.key}
Run Code Online (Sandbox Code Playgroud)

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