gpt4 book ai didi

java - 为什么 JSTL 在 Tomcat 8 中提示一个名为 "Error"的变量

转载 作者:行者123 更新时间:2023-11-30 08:15:56 24 4
gpt4 key购买 nike

我们有一个 Web 应用程序,它使用 Tomcat 7 运行得非常好。但是当我们将它部署到 Tomcat 8 上时,我们总是在 HTML 页面上看到一个错误:

Error
javax.el.ELClass@550077ee

HTML 页面是使用 JSP 和 JSTL 创建的。错误区域的JSTL代码为:

<c:if test="${Error!=null}">
<span>${Error}</span>
</c:if>

只需将从 Java 端传递的变量更改为“错误”以外的任何变量(例如 XXXError),问题就会消失。

所以谁能解释一下问题出在哪里?我假设“错误”是一个保留字,但为什么这会影响 Tomcat 8 而不是 Tomcat 7?

谢谢,

菲尔

最佳答案

这里首先要注意的是 Tomcat 8 附带 EL 3.0,这与 Tomcat 7 附带的 EL 2.2 有很大不同。如果您还没有这样做,您可能需要阅读一些差异,包括集合流、lambda 和其他一些小的改进,如静态访问器、赋值和集合文字。

就您在 Error 中看到的行为而言,如果您将其视为一个类 (java.lang.Error),则更有意义。在那种情况下,你有错误,这是一个类,永远不会为空,这意味着你的 c:if block 将始终被执行。因此,您最终会评估输出中包含的类 Error。

为避免此类冲突,请考虑不要使用大写字母作为变量名称中的第一个字符。如果您选择的是 error 而不是 Error,您就不会遇到这个问题。

关于java - 为什么 JSTL 在 Tomcat 8 中提示一个名为 "Error"的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607025/

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