Jsf-life-cycle
JSF-ライフサイクル
JSFアプリケーションのライフサイクルは、次の6つのフェーズで構成されます-
- ビューフェーズを復元する
- 要求値の適用フェーズ。プロセスイベント
- プロセス検証フェーズ。プロセスイベント
- モデル値の更新フェーズ。プロセスイベント
- アプリケーションフェーズを呼び出します。プロセスイベント
- 応答フェーズのレンダリング
6つのフェーズは、JSFがフォームを処理する順序を示しています。 リストには、各フェーズでのイベント処理を伴う可能性のある実行順序でフェーズが表示されます。
フェーズ1:ビューの復元
JSFは、リンクまたはボタンがクリックされ、JSFがリクエストを受信するとすぐに、ビューの復元フェーズを開始します。
この段階で、JSFはビューを構築し、イベントハンドラーとバリデーターをUIコンポーネントに接続し、FacesContextインスタンスにビューを保存します。 FacesContextインスタンスには、リクエストの処理に必要なすべての情報が含まれるようになりました。
フェーズ2:要求値を適用する
コンポーネントツリーが作成/復元された後、コンポーネントツリーの各コンポーネントはデコードメソッドを使用して、リクエストパラメータから新しい値を抽出します。 コンポーネントはこの値を保存します。 変換が失敗すると、エラーメッセージが生成され、FacesContextのキューに入れられます。 このメッセージは、検証エラーとともに、応答のレンダリング段階で表示されます。
現在のFacesContextインスタンスでrenderResponseと呼ばれるデコードメソッドイベントリスナーがある場合、JSFは応答のレンダリングフェーズに移動します。
フェーズ3:プロセス検証
このフェーズでは、JSFはコンポーネントツリーに登録されているすべてのバリデーターを処理します。 検証のためのコンポーネント属性ルールを調べ、これらのルールをコンポーネントに保存されているローカル値と比較します。
ローカル値が無効な場合、JSFはエラーメッセージをFacesContextインスタンスに追加し、ライフサイクルはレンダリングレスポンスフェーズに進み、エラーメッセージとともに同じページを再度表示します。
フェーズ4:モデル値の更新
JSFは、データが有効であることを確認した後、コンポーネントツリーを走査し、対応するサーバー側オブジェクトプロパティをコンポーネントのローカル値に設定します。 JSFは、入力コンポーネントの値属性に対応するBeanプロパティを更新します。
updateModelsメソッドが現在のFacesContextインスタンスでrenderResponseを呼び出した場合、JSFは応答のレンダリングフェーズに移動します。
フェーズ5:アプリケーションの呼び出し
この段階で、JSFは、フォームの送信や別のページへのリンクなど、アプリケーションレベルのイベントを処理します。
フェーズ6:応答のレンダリング
このフェーズでは、アプリケーションがJSPページを使用している場合、JSFはコンテナ/アプリケーションサーバーにページのレンダリングを要求します。 最初のリクエストでは、JSPコンテナがページを実行すると、ページに表示されるコンポーネントがコンポーネントツリーに追加されます。 これが最初の要求ではない場合、コンポーネントツリーは既に構築されているため、コンポーネントを再度追加する必要はありません。 どちらの場合でも、JSPコンテナ/アプリケーションサーバーがページ内のタグをトラバースすると、コンポーネントは自身をレンダリングします。
ビューのコンテンツがレンダリングされた後、応答状態は保存され、後続の要求がアクセスできるようになり、ビューの復元フェーズで使用できるようになります。