TOPシステム開発> カスタムコンポーネントの作成方法




まるごとサーバサイドJava
JDeveloperで学ぶJSF入門

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

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

監修:山田祥寛   2006/9/8
1   2  3  次のページ
カスタムコンポーネントの作成方法

   本連載の最後に、カスタムコンポーネントの作成方法について説明します。カスタムコンポーネントを作成するには、UIコンポーネント、レンダラ、JSFのライフサイクルなどについての理解が必要になるため、バリデータ、コンバータを作成するよりも難易度は若干高くなります。
コンポーネントの仕組み

   カスタムコンポーネントの仕組みは、JSPページ、JSPに配置するタグ、タグハンドラクラス、UIコンポーネントクラス、レンダラクラス、マネージドBeanから構成されます(図1)。

カスタムコンポーネントの仕組み
図1:カスタムコンポーネントの仕組み

   カスタムコンポーネントの各構成要素の役割を、表1に示します。

構成要素 役割
タグハンドラクラス カスタムタグの属性や要素に設定された値を保持し、カスタムタグに設定された値をUIコンポーネントに設定する
UIコンポーネントクラス 画面入力値、カスタムタグの属性や要素に設定された値をUIコンポーネントツリーの中で保持する
レンダラクラス HTTPリクエストで送られてきた値を解析してUIコンポーネントクラスに設定したり、UIコンポーネントクラスから値を取得してクライアントに依存したレスポンスをレンダリングするクラス
マネージドBean コンポーネントのタグからJSFのEL式でバインドされ、値が格納されるクラス

表1:カスタムコンポーネントの構成要素


JSFのライフサイクルとコンポーネント

   カスタムコンポーネントを作成する場合には、JSFのライフサイクル上で、レンダラ、コンポーネント、マネージドBeanに値が渡されていくタイミングと、各メソッドが呼ばれるタイミングを把握しておくことが大切になります(図2)。

ライフサイクルにおける値の受け渡し
図2:ライフサイクルにおける値の受け渡し
(画像をクリックすると別ウィンドウに拡大図を表示します)

   レンダラはクライアントから送信された値を解析(decode)し、コンポーネントに設定します。また、コンポーネントの値はマネージドBeanに設定されます。

   これらの値の受け渡しのタイミングは、JSFのライフサイクルの仕様によって定義されています。JSFのライフサイクルのおける、UIコンポーネントやマネージドBeanへの値の受け渡しのタイミングを表2にまとめました。

JSFライフサイクル上のフェーズ 実行される処理
Restore View UIコンポーネントツリーが作成されるフェーズ。UIコンポーネント内のrestoreState()メソッドが呼ばれ、入力元画面のUIコンポーネントが復元される
Apply Request Values クライアントから送信されたリクエスト値がコンポーネントに反映されるフェーズ。UIViewRoot#processDecodes()メソッドが呼び出され、レンダラによりリクエスト値が解析され、UIコンポーネントに設定される
Process Validations バリデータが起動され、検証処理が行われるフェーズ。UIViewRoot#processValidators()メソッドが呼び出され、バリデータが実行されます。また変換もこのフェーズで行われる
Update Model Values コンポーネント値がマネージドBeanに格納される。UIViewRoot#processUpdates()メソッドが呼び出される。その中でUIComponentのupdateModel()メソッドが呼び出され、マネージドBeanにコンポーネントの値が反映される
Invoke Application コマンドボタンやリンクにバインドされたマネージドBeanのメソッドが起動されるフェーズ。UIViewRoot#processApplication()メソッドが呼び出され、処理が起動されます。この処理結果にしたがい、画面遷移処理が行われる
Render Response レンダラのエンコード系のメソッドにより、クライアントに依存したレスポンスが出力される。レスポンス出力後UIコンポーネントのsaveState()メソッドが呼ばれ、UIコンポーネントの状態が保存される

表2:JSFのライフサイクルと実行される処理

1   2  3  次のページ

書籍紹介
まるごとサーバサイドJava! Vol.1
まるごとサーバサイドJava! Vol.1 〜初心者からプロまですべての開発者に贈る〜サーバサイドJavaのすべてをまるごと紹介
サーバサイドで実行されるシステム環境Java EEを取り巻く環境は一大変革を遂げようとしています。J2EE時代のEJB(Enterprise Java Beans)からPOJO(Plain Old Java Object)へ、オブジェクト指向からアスペクト指向へ。Sun Microsystems外から発生した新しい流れは本家Java EE 5へ取り入れられる予定です。本書はこうしたJavaの新潮流を余すことなくお伝えします。

発売日:2006/09/01
定価:\2,415(本体 \2,300+税)
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、小泉守義 監修:山田祥寛
著者プロフィール
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、
小泉守義
監修:山田祥寛

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


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第15回:カスタムコンポーネントの作成(前編)
カスタムコンポーネントの作成方法
  カスタムコンポーネントのサンプルアプリケーション
  TLDファイル、タグハンドラクラスの作成
JDeveloperで学ぶJSF入門
第1回 JSFの特長
第2回 JSFを構成する要素
第3回 JSFのライフサイクルとStrutsとの比較
第4回 環境設定
第5回 JSFアプリケーションを作成しよう
第6回 情報入力ページの作成
第7回 コマンドボタンの配置と結果出力ページの作成
第8回 バリデータの設定とメッセージの日本語化
第9回 アプリケーションロジックを追加する
第10回 モデルとビューを統合する
第11回 バインディングとテスト
第12回 カスタムバリデータの作成方法〜JSFをより高度に利用するために
第13回 独自のバリデータタグの作成
第14回 カスタムコンバータの作成
第15回 カスタムコンポーネントの作成(前編)
第16回 カスタムコンポーネントの作成(後編)