我已经从Tomcat7中的SPring 3 svn示例存储库部署了petclinic代码,我得到以下异常:
内部错误
根本原因是:/WEB-INF/jsp/owners/form.jsp(4,1)“$ {owner.new}”包含无效的表达式:javax.el.ELException:[new]不是一个有效的Java标识符org.apache.jasper.JasperException:/WEB-INF/jsp/owners/form.jsp(4,1)“$ {owner.new}”包含无效的表达式:javax.el.ELException: [new]不是有效的Java标识符
此表达式在SpringSOurce tc Server Developer Edition 2.0中得到了很好的解决。
有关Tomcat 7.0.2出现问题的任何想法吗?
答案 0 :(得分:4)
Bozho曾报道过这个错误:50147 - static is not a valid identifier。
归结为:
本讨论的重要部分见第21页(EL规范)。
Identifier ::= Java language identifierJava语言标识符由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}
。