TOPシステム開発> TLDファイル、タグハンドラクラスの作成
まるごとサーバサイドJava
JDeveloperで学ぶJSF入門

第15回:カスタムコンポーネントの作成(前編)

著者:WINGSプロジェクト  佐藤治夫(株式会社ビープラウド)、
小泉守義

監修:山田祥寛   2006/9/8
前のページ  1  2  3
TLDファイル、タグハンドラクラスの作成

   タグを定義したTLDファイル(jsf_date.tld)をリスト1に示します(注1)。
リスト1:jsf_date.tld(抜粋)
サンプルアプリケーションの画面遷移
(画像をクリックすると別ウィンドウに拡大図を表示します)

※注1: UIInputクラスは、ほかにも属性としてrequired、immediate、action、binding、actionListenerなどを持ちますが、本サンプルでは使用しないため省略しました

   TLDファイルを定義したら、次にタグハンドラクラスを作成します。JSFのカスタムコンポーネント対応のタグハンドラクラスを作成する際のポイントは、次のとおりです。

  1. javax.faces.webapp.UIComponentTagまたは、javax.faces.webapp.UIComponentBodyTagクラスをextendsしたクラスの作成
  2. TLDファイルに定義した属性に対応するセッターメソッドの実装
  3. getComponentType()、getRendererType()、setProperties()の3つのメソッドを実装(各メソッドの仕様については表6を参照)

表5:タグハンドラクラスを作成する際のポイント

メソッド名 説明
getComponentType JSF設定ファイルで指定する「component-type」と同じ値を返す
getRendererType JSF設定ファイルで指定する「renderer-type」と同じ値を返す
setProperties 各インスタンス変数に設定された値をUIコンポーネントに設定する処理を実装する

表6:タグハンドラクラスで実装するメソッド

   日付入力コンポーネントのタグハンドラクラスのクラス図を図4に示します。タグハンドラクラスは、JSFが用意しているjavax.faces.webapp.UIComponentBodyTagクラスをextendsしています。UIComponentBodyTagクラスには、UIComponentのタグハンドラのための基本的なメソッド、属性が実装されています。

タグハンドラクラスのクラス図
図4:タグハンドラクラスのクラス図

   次に、タグハンドラクラス(InputDateTag.java)を作成します(リスト2)。

リスト2:InputDateTag.java(抜粋)
サンプルアプリケーションの画面遷移
(画像をクリックすると別ウィンドウに拡大図を表示します)

   タグハンドラクラスの作成する際のポイントは、次のとおりです。


1. value属性

   インスタンス変数とそのセッター/ゲッターメソッドを定義しています。


2. getComponentType()メソッド/getRendererType()メソッド

   この2つのメソッドは、UIComponentTagクラスの抽象メソッドなので、実タグクラスで実装します。getComponentType()メソッドは使用するコンポーネントのタイプ名、getRendererType()メソッドは使用するレンダラのタイプ名を返す必要があります。このタイプ名は、JSF設定ファイルに定義されるタイプ名と同じ文字列です。このメソッドがJSFから呼ばれることにより、タグクラス、コンポーネントクラス、レンダラクラスの関連付けが認識されます。


3. setProperties()メソッド

   タグの属性値をコンポーネントに反映します。isValueReference()メソッドで、タグの値がバインド式かどうかを判定して、バインド式の場合はUIコンポーネントにValueBindingクラスのインスタンスをセットしています。

   次回はレンダラクラスとUIコンポーネントクラスを作成し、JSF設定ファイルへ登録を行います。

前のページ  1  2  3


著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、小泉守義 監修:山田祥寛
著者プロフィール
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、
小泉守義
監修:山田祥寛

WINGSプロジェクトは、有限会社WINGSプロジェクト(代表取締役山田祥寛)が運営するライティング・チーム。海外記事の翻訳から、主にサーバサイド分野の書籍/雑誌/Web記事の執筆、講演、アプリケーション開発などを幅広く手がける。2006年7月時点での登録メンバーは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募いただきたい。


INDEX
第15回:カスタムコンポーネントの作成(前編)
  カスタムコンポーネントの作成方法
  カスタムコンポーネントのサンプルアプリケーション
TLDファイル、タグハンドラクラスの作成