我们有一个使用Tomcat 7的Web应用程序工作得非常好。然而,当我们在Tomcat 8上部署它时,我们总是在HTML页面上看到一个错误:
Error
javax.el.ELClass@550077ee HTML页面是使用JSP和JSTL创建的。错误区域的JSTL代码是:
<c:if test="${Error!=null}">
<span>${Error}</span>
</c:if>通过简单地将变量从Java端传递到"Error“(例如XXXError)之外的任何内容,问题就会消失。
有谁能解释一下问题出在哪里?我假设“错误”是一个保留词,但是为什么这会影响Tomcat 8而不是Tomcat 7呢?
谢谢,
菲尔
发布于 2015-02-19 13:38:12
首先要注意的是Tomcat 8附带了EL 3.0,这与Tomcat 7附带的EL 2.2有很大的不同。如果您还没有这么做,您可能需要了解其中的一些差异,包括集合流、lambdas和其他一些小的改进,比如静态访问器、赋值和集合文本。
就您所看到的错误行为而言,如果您认为它是一个类(java.lang.Error),则更有意义。在这种情况下,您有错误,它是一个类,永远不会是null,这意味着您的c:if块将始终被执行。因此,您的结果是计算错误,类包含在您的输出中。
为了避免这样的冲突,考虑不要在变量名称中使用大写字母作为第一个字符。如果你犯了错误而不是错误,你就不会看到这个问题。
https://stackoverflow.com/questions/28607025
复制相似问题