我Map
在 EL 中有一个 as ${map}
,我试图使用一个键来获取它的值,该键本身也是一个${key}
带有 value的 EL 变量"1000"
。
使用${map["1000"]}
有效,但${map["$key"]}
无效。我做错了什么,如何Map
使用变量作为键来获取值?
$
不是变量名的开始,它表示表达式的开始。您应该使用${map[key]}
来访问key
map中的属性map
。
您可以在带有GET
参数的页面上尝试它,例如使用以下查询字符串?whatEver=something
<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>
这将输出:
whatEver: something
请参阅:https ://stackoverflow.com/tags/el/info并滚动到“大括号表示法”部分。
我以前遇到过这个问题。这通常发生在键不是字符串时。修复方法是在使用键从映射中获取值之前将键转换为字符串
像这样的东西:
<c:set var="keyString">${someKeyThatIsNotString}</c:set>
<c:out value="${map[keyString]}"/>
希望有帮助
您可以将键值放在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']}"/>
我的五分钱。现在我正在使用 EL 3.0 (jakarta impl),我可以使用三种方式访问地图值:
1. ${map.someKey}
2. ${map['someKey']}
3. ${map[someVar]} //if someVar == 'someKey'