連載 役に立つXMLツール集(10)
XULとJSFでリッチクライアント 〜ロジック編〜 Page 1
XMLプログラミングでは、DOMやSAXといったAPIを使用すると単調なコードを繰り返し書くことになり生産性が上がらないものだ。本連載では開発者が“楽をする”ために役立つXML関連ツールを紹介していく。(編集局) |
www.netpotlet.com
原田洋子
2004/8/18
主な内容 --Page 1--
はじめにJSF仕様の復習 --Page 2--
JSF利用者の5つのカテゴリJSPの指定方法 XULの定義 XUL定義へのJSF要素の組み込み まとめ&サンプルダウンロード |
前回「XULとJSFでリッチクライアント 〜JSF編〜」では、JSF(JavaServer Faces)がどのような仕様であるかを説明し、仕様で定義されているレンダリングについてはXUL(ずーる:XML User Interface Language)を使ってどのように実装するかの説明まで行いました。今回はJSF仕様に従って実装するにはどうするのか、また、ロジックはどのように動くのかについて概要を説明します。さらに、クライアントがXULの場合はどのようにして実装すればいいのかについても説明します。
JSF上でどのようにロジックが動くのかを理解するために、前回説明した「JSFのリクエスト処理ライフサイクル」を振り返ってみましょう。図1がJSFのリクエスト処理ライフサイクルでした。この中で、レンダリングに関係するUIコンポーネントツリーを生成する1つ目のRestore Viewと最後の部分、UIコンポーネントツリーから、XUL形式のレスポンスを生成するRender Responseについては前回実装まで行いました。今回は、2つ目のApply Request ValueからProcess Validations、Update Model Values、Invoke Applicationまでの4つを見ていきます。
図1 JSFのリクエスト処理ライフサイクル |
これまでは、この4つのステージについて簡単に触れた程度でしたので、もう少し詳しくプログラミングがどうなるのかを見てみましょう。
- 1. Apply Request Values
- フォームに入力されたパラメータなどを取得する
- UIコンポーネントツリーのルートノードに当たるUIViewRootのprocessDecodes()メソッドが実行される。さらに、ツリーの各UIComponentのprocessDecodes()メソッドが再帰的に実行される
- 具体的な処理はprocessDecodes()メソッドから呼ばれる、UIComponentのdecode()メソッド内に記述する。Rendererを使っている場合は、Rendererのdecode()メソッド内に記述する
- UIInputなどEditableValueHolderを実装しているコンポーネントのimmediateプロパティがtrueになっている場合、検証(Validation)と型変換(Conversion)が実行される
- 2. Process Validations
- フォームなどにより取得した値が正当なものかどうかを検証する
- UIコンポーネントツリーのルートノードに当たるUIViewRootのprocessValidators()メソッドが実行される。さらに、ツリーの各UIComponentのprocessValidators()メソッドが再帰的に実行される
- Apply Request Valuesの段階で実行される検証を除き、faces-config.xmlでValidatorの実装クラスが登録されているか、UIInputやそのサブクラスのvalidate()メソッドが実装されている場合に検証が実行される
- 3. Update Model Values
- データを維持しているモデルの状態を更新する
- UIコンポーネントツリーのルートノードに当たるUIViewRootのprocessUpdates()メソッドが実行される。さらに、ツリーの各UIComponentのprocessUpdates()メソッドが再帰的に実行される
- 具体的な処理はUIInputやそのサブクラスのupdateModel()メソッド内に記述する。このとき、どこで値を維持するかはUIComponentのsetValueBinding()メソッドを使って指定する
- 4. Invoke Application
- ロジックを実行する
- UIコンポーネントツリーのルートノードに当たるUIViewRootのprocessApplication()メソッドが実行される
- 通常、このメソッドは実装しない。イベントがブロードキャストされるので、それを受け取ってロジックを実行するリスナをUICommandなどActionSourceの実装クラスのsetActionListener()メソッドを使ってセットしておく。あるいは、ActionSourceの実装クラスのsetAction()メソッドを使って、実行するメソッドをセットしておく
以上のように、各処理はUIコンポーネントが実装しているメソッドをJSFコンテナが実行していきます。前回、JSFは“UIコンポーネント指向”ととらえると分かりやすいといいましたが、ここで説明したとおり、すべての処理の中心にUIコンポーネントがあるのが、JSFという仕様です。(次ページに続く)
1/2 |
Index | |
連載 役に立つXMLツール集(10) XULとJSFでリッチクライアント 〜ロジック編〜 |
|
Page 1 ・はじめに ・JSF仕様の復習 |
|
Page 2 ・JSF利用者の5つのカテゴリ ・JSPの指定方法 ・XULの定義 ・XUL定義へのJSF要素の組み込み ・まとめ&サンプルダウンロード |
「連載 役に立つXMLツール集」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|