首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JSTL抱怨Tomcat 8中有一个名为"Error“的变量

为什么JSTL抱怨Tomcat 8中有一个名为"Error“的变量
EN

Stack Overflow用户
提问于 2015-02-19 12:57:07
回答 1查看 303关注 0票数 2

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

代码语言:javascript
复制
Error
javax.el.ELClass@550077ee 

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

代码语言:javascript
复制
<c:if test="${Error!=null}">
  <span>${Error}</span>
</c:if>

通过简单地将变量从Java端传递到"Error“(例如XXXError)之外的任何内容,问题就会消失。

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

谢谢,

菲尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 13:38:12

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

就您所看到的错误行为而言,如果您认为它是一个类(java.lang.Error),则更有意义。在这种情况下,您有错误,它是一个类,永远不会是null,这意味着您的c:if块将始终被执行。因此,您的结果是计算错误,类包含在您的输出中。

为了避免这样的冲突,考虑不要在变量名称中使用大写字母作为第一个字符。如果你犯了错误而不是错误,你就不会看到这个问题。

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

https://stackoverflow.com/questions/28607025

复制
相关文章

相似问题

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