カスタムタグは設定が複雑であまり利用されなかったクラシックタグの時代があり、JSTLなどの標準化されたタグがそれなりに使われるようになった。
最近のWebコンテナではweb.xmlでの設定は不要。WEB-INF以下においておけば起動時に検索してくれるようになった。
rtexpvalue | trueだと属性の指定にELなどが使えるようになる |
empty以外非常にわかりずらいので入念に解説
bodyが空でなければならない
<mytag:test/> はOKだけど <mytag:test>hoge</mytag:test> はNG
これはシンプルでわかりやすい!ほかの要素のわかりづらさは異常。
bodyの内部処理はタグに依存するという意味で、JSPコードを書こうがそのまま出力されるということ。bodyをそのまま出力するカスタムタグを作った場合
<mytag:test><%= request %></mytag:test> → <%= request %>とそのまま表示される。
JSPスクリプトがなし。つまりスクリプトレット使用不可能。下記記述はエラー!
<mytag:test><%= request %></mytag:test>
フラグメントとは固まりのこと。これまで属性値は一行で収まる範囲で指定していたが、フラグメントを利用すると数行に渡る固まりを属性値として渡すことができる。
<mytag:test contents="表示内容"/> これだと表示内容が増えたときに横に伸びて見づらい
<mytag:test> <jsp:attribute name="contents"> とっても膨大で何行にも及ぶコンテンツ とっても膨大で何行にも及ぶコンテンツ とっても膨大で何行にも及ぶコンテンツ </jsp:attribute> </mytag:test>
<mytag:test> <jsp:attribute name="contents"> とっても膨大で何行にも及ぶコンテンツ とっても膨大で何行にも及ぶコンテンツ とっても膨大で何行にも及ぶコンテンツ </jsp:attribute> <jsp:body> ここがBODY </jsp:body> </mytag:test>
jsp:bodyタグで囲う必要がある。