首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用JSTL访问Map中的Map

无法使用JSTL访问Map中的Map
EN

Stack Overflow用户
提问于 2012-04-05 22:37:35
回答 1查看 886关注 0票数 0

我在Java中有一个Map,它包含另一个Map,如下所示:

代码语言:javascript
复制
Map<String, Map<String, Object>> myMap = ...

我知道这并不是传递数据的理想方式,但是对于测试来说,它比只用于将数据推送到JSTL的类更容易。

已经说过了,我们无法在第二级Map中获得值。

代码语言:javascript
复制
${ myMap[someString1][someString2] != null }

当加载页面时,它会导致编译错误:

代码语言:javascript
复制
org.apache.jasper.JasperException: /mypage.jsp (line: 142, column: 9) "${ myMap[someString1][someString2] != null }" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${ myMap[someString1][someString2] != null }]
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)

奇怪的是,在运行Tomcat 6.0.29的机器上运行良好,在运行7.0.26的机器上失败。

编辑:在这两种情况下,应用程序都在使用JSTL-1.2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 00:55:39

结果却是个表面上的回答。我更改了变量名,以混淆代码的用途,当它实际上掩盖了问题时,我认为它会使事情变得更容易理解。

原始代码:

代码语言:javascript
复制
<c:forEach items="${someobject.items}" var="interface">
    ...
    ${ myMap[interface][someString2] != null }
    ...
</c:forEach>

注意,forEach循环的变量名-- interface当然是一个保留的interface关键字,但是堆栈跟踪并没有很好地吸引人们对此的注意。

将变量名更改为interfaze或其他任何内容都解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10036982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档