10. Nestedタグライブラリ
- 10.1. Nestedタグライブラリ
- 10.2. rootタグ
- 10.3. nestタグ
10.1. Nestedタグライブラリ
Nestedタグライブラリは新しい機能を提供するタグライブラリではありません。beanタグライブラリやhtmlタグライブラリ・logicタグライブラリでの入力を、簡単にするものです。例えば以下のような例が考えられます。
... <li><bean:write name="sample" property="string" /></li> <li><bean:write name="sample" property="int" /></li> <li><bean:write name="sample" property="double" /></li> <li><bean:write name="sample" property="inner.string" /></li> ...
このように同じJava Beanから幾つかのプロパティの値を順に出力していくのは、よくある例です。このような時、
... name="sample" ...
と繰り返し書くのは、冗長なように思われます。このような時、Nestedタグライブラリを用いれば
... <nested:root name="sample"> <li><nested:write property="string" /></li> <li><nested:write property="int" /></li> <li><nested:write property="double" /></li> <li><nested:write property="inner.string" /></li> </nested:root> ...
と簡潔に書く事ができるようになります。このようにNestedタグライブラリを用いれば、繰り返し同じJava Beanに対するアクセスを簡単にする事ができるようになります。したがってNestedタグライブラリで提供されているタグのほとんどは、bean/html/logicタグライブラリで提供されているタグと同等のもので(name属性を省略できる)、新たに提供しているものはrootタグ・nestタグ・writeNestingの3つだけです。ここではよく使われるrootタグとnestタグについて説明します。
まずNestedタグライブラリを使用するための前準備について説明します。Nestedタグライブラリを使用するためには、TLDファイル(struts-nested.tld)とweb.xmlへの設定が必要です。TLDファイルはstrutsのlibディレクトリにありますので、適当な場所にコピーしてください。web.xmlへの設定は以下のようになります。
<web-app> ... <taglib> <taglib-uri>http://jakarta.apache.org/struts/tags-nested</taglib-uri> <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location> </taglib> ... </web-app>
Nestedタグライブラリのタグを使用する際には、JSPページの先頭でtaglibディレクティブの宣言が必要です。
<%@ page contentType="text/html; charset=EUC-JP" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %> ...
taglibディレクティブのuri属性に、直接tldファイルの場所を指定することによってweb.xmlの設定を省略する事もできます。またNestedタグライブラリのクラスファイルはstruts.jarに含まれていますので、他に設定する必要はありません。