Spring 3 - Petclinic - $ {owner.new} Tomcat 7中的无效表达式

时间:2010-10-07 08:12:11

标签: java spring jsp tomcat7

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

内部错误

  

根本原因是:/WEB-INF/jsp/owners/form.jsp(4,1)“$ {owner.new}”包含无效的表达式:javax.el.E​​LException:[new]不是一个有效的Java标识符org.apache.jasper.JasperException:/WEB-INF/jsp/owners/form.jsp(4,1)“$ {owner.new}”包含无效的表达式:javax.el.E​​LException: [new]不是有效的Java标识符

此表达式在SpringSOurce tc Server Developer Edition 2.0中得到了很好的解决。

有关Tomcat 7.0.2出现问题的任何想法吗?

4 个答案:

答案 0 :(得分:4)

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

归结为:

  

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

Identifier ::= Java language identifier
     

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

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

${owner['new']}

${owner.isNew()}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

我建议在http://jira.springsource.org处提交一个错误,这几乎肯定是他们想要解决的问题。

答案 3 :(得分:0)

它适用于${owner.isNew()}而不是${owner.new}