この規則により、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>This is an example of template text that will be detected: #{detected}</h1>
|
自動修正では、このコードを次のように変更する:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
式言語 (EL) を非アクティブ化する場合も、以下のようにさまざまな方法があります。
- ページ単位ベースですべての EL 式を: 開発者は、JSP ページ・ディレクティブの isELIgnored 属性を指定し、その値を true に設定できます。
例:
|
<%@ page isELIgnored ="true" %>
|
これにより、そのページのすべての EL 式がオフになります (つまり、すべての
${exp} and #{exp}
)
- web.xml 内の JSP プロパティー・グループ設定により: 開発者は el-ignored エレメントを true に設定して、単一ページの EL を非アクティブ化したり、特定の URL パターンに基づいて複数のページを非アクティブ化したりできます。
例:
< span class="Code"> < jsp-property-group>
< url-pattern> *.jsp < /url-pattern>
< el-ignored> true < /el-ignored>
</jsp-property-group>
|
- web.xml 内の JSP プロパティー・グループ設定により: EL 据え置き構文 (#{}) のみ非アクティブ化します。
例:
< span class="Code"> < 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 内のそれぞれのエレメントの値を指定変更します。
追加情報については、以下を参照してください。