Spring 3 - Petclinic - неверное выражение $ {owner.new} в Tomcat 7 - PullRequest
4 голосов
/ 07 октября 2010

Я развернул код petclinic из репозитория svn SPring 3 в Tomcat7 и получил следующее исключение:

Внутренняя ошибка

Основная причина: / 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 с ним проблемы?

Ответы [ 4 ]

4 голосов
/ 17 января 2011

Божо когда-либо сообщал об этой ошибке: 50147 - статический недопустимый идентификатор .

Это сводится к:

Важной частью этого обсуждения является стр. 21 (спецификации EL).

Identifier ::= Java language identifier

Идентификатор языка Java определяется спецификацией языка Java (JLS).

Идентификаторы указаны в главе 3.8 JLS, которая действительно подтверждает, что идентификаторы не могут быть ключевыми словами. Согласно отчету об ошибке, вам нужно получить к нему доступ следующим образом:

${owner['new']}

или

${owner.isNew()}
2 голосов
/ 17 января 2011

Спецификация EL не разрешает использование ключевых слов Java в качестве идентификаторов. «new» - это ключевое слово Java, поэтому $ {owner.new} не является допустимым EL. Tomcat 7 применяет это правило по умолчанию (Tomcat 6 не поддерживает обратную совместимость). Ошибка в образце приложения Spring.

1 голос
/ 07 октября 2010

Я предполагаю, что анализатор EL в Tomcat 7 немного более строг, чем в tcServer (который основан на Tomcat 6).

Я предлагаю подать ошибку на http://jira.springsource.org, поэтому они наверняка захотят исправить.

0 голосов
/ 04 октября 2011

Будет работать с ${owner.isNew()} вместо ${owner.new}.

...