JSF+AjaxでUIコンポーネント開発 with Shale Remoting (6)
「JSF+AjaxでUIコンポーネント開発 with Shale Remoting (4)」で予告した内容を今回紹介しようと思ったが,あまり概論ばかりでも退屈なので,実際のコードを今回から解説していこうと思う。その中で処理の流れを見ていけばいいかな,と。
JSFコンポーネントのJSP実装はカスタムタグの形態をとるため,まずはタグライブラリディスクリプタ,つまりtaglib.tldファイルから取り上げよう。taglib.tldファイルはJSFだからといって特別なことは何もない。JSPのカスタムタグを自作するときと同様に作成すれば良い。
そして,JARファイルを配置するだけでカスタムタグを使用可能とするために,uri要素はしっかりと記述しておく。
<tlib-version>1.0</tlib-version>
<short-name>double-select</short-name>
<uri>http://www.eisbahn.jp/jsf/double-select</uri>
これにより,JSP内で以下のように宣言できるようになり,web.xmlへの記述も不要となる。
<%@ taglib uri=”http://www.eisbahn.jp/jsf/double-select” prefix=”my” %>
次に,double-selectタグの定義だが,要点としては,
- 本体部は持たない。
- 属性は「id」「value」「leftSelectItems」「rightSelectItems」の4つを定義する。
となる。「JSF+AjaxでUIコンポーネント開発 with Shale Remoting (5)」で示したdouble-selectタグの記述例を思い出して欲しい。double-selectタグ定義のコードは以下のようになる。
<tag>
<name>double-select</name>
<tag-class>jp.eisbahn.testprograms.jsf.ds.DoubleSelectTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>id</name>
<required>false</required>
</attribute>
<attribute>
<name>value</name>
<required>true</required>
</attribute>
<attribute>
<name>leftSelectItems</name>
<required>true</required>
</attribute>
<attribute>
<name>rightSelectItems</name>
<required>true</required>
</attribute>
</tag>
id属性のみを任意とし,他の属性は必須とした。leftSelectItems属性およびrightSelectItems属性は,選択肢を得るために必ず記述が必要となる。また,入力コンポーネントであるからvalue属性も事実上必須としても良いと考えられる。
タグ名は「double-select」とし,カスタムタグハンドラクラスとしてDoubleSelectTagクラスを指定している。特別JSFな記述は見当たらないことはわかるだろう。
taglib.tldファイルの完成形をここからダウンロードできるようにしてある。「JSF+AjaxでUIコンポーネント開発 with Shale Remoting (3)」で作成したEclipseプロジェクトの以下の場所に配置されたし。
・[Eclipseワークスペース]/double-select/src/main/resources/META-INF/
次回はいよいよJSFに依存したコーディングに入っていこう。


