gpt4 book ai didi

jsp - 无法使用 JSTL 访问 map 内部的 map

转载 作者:行者123 更新时间:2023-11-28 23:50:08 25 4
gpt4 key购买 nike

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

Map<String, Map<String, Object>> myMap = ...

我知道这不是传递数据的理想方式,但对于测试而言,它比充实仅用于将数据推送到 JSTL 的类更容易。

话虽如此,我们无法获取二级Map中的值:

${ myMap[someString1][someString2] != null }

加载页面时导致编译错误:

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。

最佳答案

结果是一个捂脸的回答。我更改了变量名称以混淆代码的目的,认为这会使事情变得更容易理解,但实际上它掩盖了问题。

原代码:

<c:forEach items="${someobject.items}" var="interface">
...
${ myMap[interface][someString2] != null }
...
</c:forEach>

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

将变量名称更改为 interfaze 或任何其他名称可以解决问题。

关于jsp - 无法使用 JSTL 访问 map 内部的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com