4

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

4 に答える 4

4

Bozhoはこのバグを報告したことがあります:50147-staticは有効な識別子ではありません

要約すると、次のようになります。

この議論の重要な部分は、(EL仕様の)21ページにあります。

識別子::=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 ベース) の EL パーサーよりも少し厳密です。

http://jira.springsource.orgにその趣旨のバグを報告することをお勧めします。これは、ほぼ確実に彼らが修正したいと考えているものです。

于 2010-10-07T13:11:50.833 に答える
0

${owner.isNew()}の代わりに動作し${owner.new}ます。

于 2011-10-03T20:46:23.177 に答える