ShowTable of Contents
JSF は Web アプリケーションのユーザーインターフェース構築を容易にするために開発された
Java EE 標準のフレームワークです。
XPages では、この JSF をバックグラウンドのフレームワークとして採用しています。
JSF のライフサイクル
JSF では、アプリケーションが HTTP リクエストを受け取ってからレスポンスを返すまでの
ライフサイクルを、次の6つのフェーズに分けて定義しています。
- Restore View フェーズ
リクエストされたページの UI コンポーネントツリー構造を作成または復元します。
- Apply Request Values フェーズ
送信されてきた値を、対応する UI コンポーネントに適応します。
- Process Validation フェーズ
適応された値を、UI コンポーネントに対応付けられたバリデータにより検証します。
- Update Model Values フェーズ
検証された値により、UI コンポーネントに対応付けられたモデルを更新します。
- Invoke Application フェーズ
モデルが持つビジネスロジックを実行します。
- Render Response フェーズ
処理結果を、ブラウザにレンダリングできる形(HTML)に変換し、レスポンスします。
XPages における JSF のライフサイクル
これらを XPages 開発者の視点から説明し直すと、次のようになります。
Restore View フェーズ
XPages の各ページは、ラベルや編集ボックスなど、さまざまなコントロールを階層的に
組み合わせて構築されています。
実行時には、この構造を表現するコンポーネントツリーがページ情報として構築されます。
始めてページがアクセスされた際には、このコンポーネントツリーが新規に作成されます。
リクエストに対する処理がすべて終わった後、次のアクセスに備えてコンポーネントツリーが保存されます。
その後、部分更新などを使って、同じページに対して処理が継続される際には、
更新が発生するたびに、保存されてるコンポーネントツリーが呼び戻され、それに対して
新たなリクエストの処理が適用されます。
Restore View フェーズでは、このコンポーネントツリーの新規作成や保存したツリーの
呼び戻しを行います。
ページイベントとしては、beforePageLoad/afterPageLoad/afterRestoreView イベントが
このフェースの前後に実行されます。
Apply Request Values フェーズ
編集ボックスコントロールなど入力値を受け取るコントロールに対して、
ブラウザからフォーム入力値として送信されてきた値を引き渡します。
対応する各コントロールは未検証の値なので「仮」に受け取ります。
Process Validation フェーズ
XPages では、入力系コントロールには妥当性検査のプロパティを設定することが出来ます。
数値のみ、最大/最小長、一定のパターンに一致するなど、さまざまな条件を指定できます。
このフェーズでは、Apply Request Values フェーズで「仮」に受け取った値に対して、
指定された妥当性検査を行います。すべて検査にパスした場合には、
次の Update Model Values に進みます。
エラーがあった場合には、Render Response フェーズにジャンプしてエラー表示を行います。
Update Model Values フェーズ
Process Validation フェーズで検証済みの入力値を、「正式」に受け入れ、コントロールの
値とします。
Invoke Application フェーズ
入力値の受け入れが終わった後、処理ロジックを実行します。具体的には、各コントロールの
onClick などのイベントに割り当てられた JavaScript などのアクションを実行します。
Render Response フェーズ
すべての処理が完了した後、最終的なコンポーネントツリーから、ブラウザにレスポンスとして
返す HTML を生成します。
ページイベントとしては、beforeRenderResponse/afterRenderResponse イベントが
このフェースの前後に実行されます。