4

我已经从 Tomcat7 中的 SPring 3 svn 示例存储库中部署了 petclinic 代码,但出现以下异常:

内部错误

根本原因是:/WEB-INF/jsp/owners/form.jsp(4,1) "${owner.new}" contains invalid expression(s): javax.el.E​​LException: [new] is not a valid Java标识符 org.apache.jasper.JasperException: /WEB-INF/jsp/owners/form.jsp(4,1) "${owner.new}" contains invalid expression(s): javax.el.E​​LException: [new]不是有效的 Java 标识符

此表达式在 SpringSOURce tc Server Developer Edition 2.0 中完美解析。

任何想法为什么 Tomcat 7.0.2 有问题?

4

4 回答 4

4

Bozho 曾经报告过这个错误:50147 - static is not a valid identifier

它归结为:

此讨论的重要部分在第 21 页(EL 规范)。

标识符 ::= Java 语言标识符

Java 语言标识符由 Java 语言规范 (JLS) 定义。

标识符在JLS 的第 3.8 章中指定,确实确认标识符可能不是关键字。根据错误报告,您需要按如下方式访问它:

${owner['new']}

或者

${owner.isNew()}
于 2011-01-17T13:07:11.263 回答
2

EL 规范不允许使用 Java 关键字作为标识符。“new” 是一个 Java 关键字,因此 ${owner.new} 不是合法的 EL。Tomcat 7 默认强制执行此规则(Tomcat 6 不支持向后兼容)。该错误位于 Spring 示例应用程序中。

于 2011-01-17T09:59:17.687 回答
1

我的猜测是 Tomcat 7 中的 EL 解析器比 tcServer(基于 Tomcat 6)中的解析器更严格一些。

我建议在http://jira.springsource.org上提交一个错误,这几乎肯定是他们想要修复的东西。

于 2010-10-07T13:11:50.833 回答
0

它将与${owner.isNew()}而不是一起使用${owner.new}

于 2011-10-03T20:46:23.177 回答