2.3.5 カスタムタグの属性名チェック
カスタムタグの属性名チェック時に,次の属性名で大文字と小文字が一致しない場合,トランスレーションエラーが発生します。
-
JSPのカスタムタグで指定した属性名
-
TLDファイルまたはタグファイルで定義した属性名
アプリケーションサーバでは,カスタムタグの属性名チェック時に,大文字と小文字の不一致によるトランスレーションエラーの発生を抑止できます。大文字と小文字の不一致によるトランスレーションエラーの発生を抑止すると,TLDファイルまたはタグファイルに定義されている属性名から,大文字と小文字を区別しないでカスタムタグの属性定義が検索されます。
TLDファイルおよびタグファイルの属性名を定義する個所は次のとおりです。
-
TLDファイルの<taglib><tag><attribute>要素内の<name>要素で定義した属性名
-
タグファイルのattributeディレクティブで定義した属性名
- 〈この項の構成〉
(1) カスタムタグの属性名チェックを無効にする方法
カスタムタグの属性名チェック時に大文字と小文字の不一致によるトランスレーションエラーの発生を抑止するには,次の二つの方法があります。
-
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内でパラメタwebserver.jsp.translation.customAction.ignoreCaseAttributeNameにtrueを指定します。
簡易構築定義ファイル,および指定するパラメタの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4.3 簡易構築定義ファイル」を参照してください。
-
cjjspcコマンドに-usebeannocheckduplicateidオプションを指定してコンパイルします。
コマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjjspc(JSPの事前コンパイル)」を参照してください。
(2) 注意事項
大文字と小文字だけで区別されている属性がある場合に,大文字と小文字の不一致によるトランスレーションエラーの発生を抑止しないでください。抑止すると,次の問題が発生します。
-
大文字と小文字だけで区別されている複数の属性をJSPのカスタムタグで指定している場合
それぞれの属性に対してタグハンドラのsetterメソッドが実行されます。このとき,同一の属性が複数個指定されていても,トランスレーションエラーは発生しません。このため,複数個の同一の属性に対してsetterメソッドが実行されてしまうおそれがあります。
-
大文字と小文字だけで区別されている属性名に対応したタグハンドラを実装している場合
大文字と小文字の区別なく,TLDファイルまたはタグファイルで先に記述された属性のsetterメソッドが呼び出されます。このとき,トランスレーションエラーは発生しません。このため,意図したsetterメソッドを呼び出すことができなくなるおそれがあります。