この規則により、JSP ファイルでの '#{' シーケンスの使用にフラグを立てます。
JSP 2.1 では、構文 #{} が予約キーワードになりました。
シーケンス #{} を含む古い JSP ファイルが JSP 2.1 で使用されると、エラーが発生します。
#{ シーケンスを検出するには、以下の条件が該当する必要があります。
- サーブレットのバージョン (web.xml の) が 2.4 以上であること。
- ページにディレクティブ isELIgnored="true" が設定されていないこと。
- <el-ignored> が true に設定されている状態で、ページが <jsp-property-group> (web.xml の <jsp-config> から) の <url-pattern> にマップされないこと。
- #{ のエントリーが jsp テンプレート・テキストにあること。
- エントリーが Java Server Faces (JSF) タグでないタグにあること。
この規則は、タグ接頭部を「以下の接頭部を使用するタグをバイパスする」という規則プロパティーに提供されている接頭部のリストと比較して JSF タグを検出します。
バイパスされる JSF 接頭部のデフォルト値は h,f,ui,facelet,composite,comp,ez. です。
次の項目に注意してください:
- こうしたタグが無視されるようになるには、ユーザーが、その他の JSF 接頭部を関連のアプリケーションで定義してその JSF 接頭部を追加する必要があります。
- 接頭部が JSF タグにではなく、JSP ページ内で使用される場合、ユーザーは接頭部パラメーターからエントリーをすべて除去する必要があります。
- 接頭部が場合によっては JSF 接頭部として使用され、またその他の場合には通常の JSP タグとして使用される場合、ユーザーはその接頭部をパラメーター・リストに含めないで、生成されたそれぞれの結果を手動で調べる必要があります。
クイック・フィックスは、#{ 構文規則の前にエスケープ文字を追加します。
例:
|
<h1>これは、検出されるテンプレート・テキストの例です: #{detected}</h1>
|
クイック・フィックスはこのコードを次のように変更します。
|
<h1>以下は、検出されるテンプレート・テキストの例です:\#{detected}</h1>
|
式言語 (EL) を非アクティブ化する場合も、以下のようにさまざまな方法があります。
- ページ単位ベースですべての EL 式を: 開発者は、JSP ページ・ディレクティブの isELIgnored 属性を指定し、その値を true に設定できます。
例:
| <%@ page isELIgnored ="true" %> |
このページのすべての EL 式 (つまり、すべての ${exp} と #{exp}) がオフになります。
- web.xml 内の JSP プロパティー・グループ設定により: 開発者は el-ignored エレメントを true に設定して、単一ページの EL を非アクティブ化したり、特定の URL パターンに基づいて複数のページを非アクティブ化したりできます。
以下に例を示します。
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
|
- web.xml 内の JSP プロパティー・グループ設定により: EL 据え置き構文 (#{}) のみ非アクティブ化します。
以下に例を示します。
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- ページ単位ベースで EL 据え置き構文のみを: JSP ページ・ディレクティブの deferred-syntax-allowed-as-literal 属性を true に設定します。
例:
| <%@ page deferredSyntaxAllowedAsLiteral="true" %> |
優先順位にご注意:
ページ・ディレクティブの isELIgnored 属性と deferredSyntaxAllowedAsLiteral 属性は、web.xml 内のそれぞれのエレメントと値より優先します。
これらのページ・ディレクティブ属性は、web.xml 内のそれぞれのエレメントの値を指定変更します。
追加情報については、以下を参照してください。