-カスタムタグについて記述

#contents

*歴史 [#cee91dc1]

カスタムタグは設定が複雑であまり利用されなかったクラシックタグの時代があり、JSTLなどの標準化されたタグがそれなりに使われるようになった。

*tldファイル [#hbd07fa8]

最近のWebコンテナではweb.xmlでの設定は不要。WEB-INF以下においておけば起動時に検索してくれるようになった。

**attribute要素 [#qfa4f9a0]

|rtexpvalue|trueだと属性の指定にELなどが使えるようになる|

**body-content要素 [#ea2703af]

empty以外非常にわかりずらい。
empty以外非常にわかりずらいので入念に解説

***empty [#m545b6a1]

bodyが空でなければならない

 <mytag:test/> はOKだけど
 <mytag:test>hoge</mytag:test>
 <mytag:test>hoge</mytag:test> はNG

これはシンプルでわかりやす!ほかの要素のわかりづらさは異常。
これはシンプルでわかりやすい!ほかの要素のわかりづらさは異常。

***tagdependent [#fb4049f7]

bodyの内部処理はタグに依存するという意味で、JSPコードを書こうがそのまま出力されるということ。bodyをそのまま出力するカスタムタグを作った場合

 <mytag:test><%= request %></mytag:test> → <%= request %>とそのまま表示される。

***scriptless [#q7119ef6]

JSPスクリプトがなし。つまりスクリプトレット使用不可能。下記記述はエラー!

 <mytag:test><%= request %></mytag:test>

*JSPフラグメントとはなんぞや [#g5d6f8f2]

フラグメントとは固まりのこと。これまで属性値は一行で収まる範囲で指定していたが、フラグメントを利用すると数行に渡る固まりを属性値として渡すことができる。

-フラグメントがない場合(従来)

 <mytag:test contents="表示内容"/> これだと表示内容が増えたときに横に伸びて見づらい

-フラグメントを利用する

 <mytag:test>
   <jsp:attribute name="contents">
      とっても膨大で何行にも及ぶコンテンツ
      とっても膨大で何行にも及ぶコンテンツ
      とっても膨大で何行にも及ぶコンテンツ
   </jsp:attribute>
 </mytag:test>


-フラグメント利用時のBodyの指定
 
 <mytag:test>
   <jsp:attribute name="contents">
      とっても膨大で何行にも及ぶコンテンツ
      とっても膨大で何行にも及ぶコンテンツ
      とっても膨大で何行にも及ぶコンテンツ
   </jsp:attribute>
   <jsp:body>
      ここがBODY
   </jsp:body>
 </mytag:test>


jsp:bodyタグで囲う必要がある。
#counter

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS