「Java/JavaEE/WebTier/JSFAdvanced」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
----
*Overviewof the JavaServer Faces Lifecycle
-一般的なWebアプリケーションのライフサイクル
--入力リクエストのハンドリング
--パラメータのでコード
--状態の変更と保存
--プラウザへのページの描画
-簡単なアプリケーションでは、JSFの自動的なライフサイクル管理を利用
-複雑なアプリケーションでは、自分でライフサイクル管理
-良いコンポーネントを作るためには、ライフサイクルのフェーズを理解する必要がある
----
*The Lifecycle of a JavaServer Faces Application
-クライアントがページに対してHTTPリクエストを送信したときに開始
-サーバがページのレスポンスを返却したら終了
-ライフサイクルは大きくexecuteとrenderの2フェーズ分けられる
-executeフェーズはコンポーネントツリーを扱うためにさらにサブフェーズに分けられる
--コンポーネントデータの変換、バリデート、コンポーネントイベントのハンドリング、ビーンへのコンポーネントデータ設定
-JSFページはviewと呼ばれるコンポーネントツリーにより表現される
--JSFはライフサイクル中に、過去のページサブミットで保存された状態を考えながらviewを生成する
-ライフサイクルでは2種類のリクエストを扱う
--initialリクエスト
---ページに対して初回のリクエスト
---Restore View と Render Response のみ実行される
--postbadk
---すでにプラウザに表示されているページ上でフォームをサブミット
---すべてのフェーズを実行
-別ページを描画するために、アプリケーションは新規にviewを作成しFacesContextインスタンスに保存する
-FacesContext.renderResponseで即時にビューをレンダリング
-FacesContext.responseCompleteでRender Responseフェーズをスキップ
--Webサービスなどの異なるアプリケーションへのリダイレクト
--JSFコンポーネントを含まないレスポンス生成
-コンポーネントのimmediate属性をtrueにすると変換、バリデーション、イベントハンドリングがApply Request Values Phaseで行われる
**Restore Viewフェーズ
-JSFページへのリクエストがあったとき
-ページビューのビルド
-イベントハンドラとバリデータをコンポーネントに紐付け
-FacesContextへのビューの保存
-ページへの初回リクエストの場合、空ビューを生成し、Render Responseフェーズへ
-ページへのボスとバックリクエストの場合、FacesContextにページ情報が保存されていて、クライアントまたはサーバに保存されている状態の情報を使ってビューをリストア
**Apply Request Valuesフェーズ
-ポストバックリクエストでビューがリストアされた後、ツリー内のコンポーネントはprocessDecodes()でリクエストパラメータから新しい値を抜き出し、コンポーネントのローカル値が設定される
--値の変換が失敗したらコンポーネントに対するエラーメッセージの生成とFacesContextへのキューイングが行われる
---エラーメッセージはRender Responseフェーズでバリデーションエラーメッセージとともに表示
-デコードまたはイベントリスナがFacesContext.renderResponseメソッドを読んだらRender Responseフェーズまでスキップされる
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
-コンポーネントのimmediate属性がtrueの場合は、バリデータ、変換、イベント処理が実行される
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-終了状態:
--コンポーネントには新しい値が設定
--メッセージとイベントがキューされている
**ProcessValidationsフェーズ
-ツリー中のコンポーネントに登録されたすべてのバリデータが実行(processValidatorsメソッド)される
--コンポーネントの属性としてしていされたバリデーションルールとローカルのコンポーネント値
-ローカル値が不正な場合は、FacesContextにエラーメッセージが追加され、Render Responseフェーズへ
--バリデーションと変換(Apply Request Valueフェーズ)のエラーメッセージが表示される
-バリデートメソッドまたはイベントリスナの処理中でFacesContext.renderResponseが呼ばれると、Render Responseフェーズへ
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
**Update Model Valuesフェーズ
-データバリデーションが済んだら、JSFはコンポーネントツリーを横断してサーバサイドのオブジェクトのプロパティにコンポーネントのローカル値を設定
--入力コンポーネント値属性で指定したビーンのプロパティを更新する
-ローカルデータがビーンプロパティに変換できない場合は、エラーメッセージを表示するRender Responseフェーズへ
-updateModelsメソッドまたはリスナの処理中でFacesContext.renderResponseが呼ばれると、Render Responseフェーズへ
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
**Invoke Application フェーズ
-アプリケーションレベルのイベントハンドリング
--サブミット、リンク
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-過去のリクエストの状態からビューが再構成され、コンポーネントがイベントを発生させていたら、関連リスナーにブロードキャストされる
-最後にRender Responseフェーズへ
**Render Responseフェーズ
-ビューをビルドし、適切なリソースにページレンダリングを委譲
-初回リクエストの場合、ページ上のコンポーネントはコンポーネントツリーに追加される
-ポストバックリクエストでエラーが発生した場合、元のページがレンダリングされる
--Apply Request Values, Process Validations, UpdateModel Values
--message, messagesタグがあればエラーメッセージが表示される
-ビューがレンダリングされた後は、レスポンスの状態が保存される
--続くリクエストのRestore Viewフェーズから利用可能
----
*Partial Processing and Partial Rendering
-単一コンポーネントに対して、処理とレンダリングが可能
-パーシャルリクエストはJSFではPartialViewContextで扱われる
-f:ajaxタグのexecute、render属性
----
*The Lifecycle of a Facelets Application
-Faceletsを使用したページに対して初回リクエストした場合、UIViewRootが作成されFacesContextに置かれる
-UIViewRootはFaceletsに適用され、ビューはコンポーネントを集めて作られる
-最新のビューがレスポンスとしてレンダリングされる
-レンダリング時に、ビューの状態が次回のリクエストのために保存される
--入力コンポーネントとフォームデータが保存される
-クライアントはビューとやり取りする。この時ビューが保存された状態からリストアされる
-リストアされたビューがJSFライフサイクルを通った結果、新規ビューまたは、現在のビューを再描画する
-同じビューが要求されたら、保存されたビューが描画される
-新規ビューが要求されたら、2番目へ
-新規ビューがレスポンスとしてレンダリングされる
----
*User Interface Component Model
**User Interface Component Classes
-JSFはUIコンポーネントクラスとUIコンポーネントの機能のインターフェースを提供
--コンポーネント状態の維持
--オブジェクトへの参照の管理
--イベントハンドリング
--標準コンポーネントの描画
-コンポーネントクラスを拡張してカスタムコンポーネントが作れる
-コンポーネントクラスはUIComponentBaseを継承
|UIComponent|抽象基底クラス||
|UIComponentBase|JSFのUIコンポーネントクラスの親。デフォルト状態と振る舞いを定義|UIComponentのサブクラス|
|UIColumn|UIDataコンポーネント中の単一カラム||
|UICommand|アクションを引き起こすコントローラ||
|UIData|DataModelで表現されるデータの集合を表現する||
|UIForm|データをサブミットするコントローラ。<form>タグ||
|UIGraphic|画像を表示||
|UIInput|ユーザ入力を受け取る。|UIOutputのサブクラス|
|UIMessage|ローカライズされたエラーメッセージを表示||
|UIMessages|ローカライズされたエラーメッセージのセットを表示||
|UIOutcomeTarget|リンクまたはボタンでハイパーリンクを表示||
|UIOutput|ページへのデータの出力を表示||
|UIPanel|子コンポーネントのレイアウトを管理||
|UIParameter|置換パラメータを表現||
|UISelectBoolean|ユーザに選択/未選択機能を提供|UIInputのサブクラス|
|UISelectItem|単一項目を表現||
|UISelectItems|項目セット全体を表現||
|UISelectMany|ユーザに項目グループから複数の項目を選択する機能を提供|UIInputのサブクラス|
|UISelectOne|ユーザに項目グループから単一の項目を選択する機能を提供|UIInputのサブクラス|
|UIViewParameter|リクエストのクエリパラメータを表現|UIInputのサブクラス|
|UIViewRoot|コンポーネントツリーのルート||
-コンポーネントクラスは振る舞いのインタフェースを実装
|ActionSource|アクションイベントを引き起こす。JSF2.xではduplicate|
|ActionSource2|ActionSourceを継承。アクションイベントハンドラメソッドの指定にUnified EL式を使える|
|EditableValueHolder|ValueHolderを継承。バリデーションやValueChangeイベント発生などの追加フィーチャ|
|NamingContainer|このコンポーネントのルートコンポーネントは一意のIDをもつ|
|StateHolder|コンポーネント状態がリクエスト間で保存される|
|ValueHolder|コンポーネントがローカル値を保持する。|
|SystemEventListenerHolder|SystemEventListenerのリストを保持する|
|ClientBehaviorHolder|ClientBehaviorインスタンスを付加できる|
-UICommandはActionSource2、StateHolderを実装
-UIOutputはStateHolder、ValueHolderを実装
-UIInputはEditableValueHolder、StateHolder、ValueHolderを実装
-UIComponentBaseはStateHolderを実装
-コンポーネント作成者はコンポーネントクラスと振る舞いインターフェースを直接つかう
-ページ作成者は標準コンポーネントをページにタグを埋め込むことでつかう
-多くのコンポーネントは異なる形式で描画できる
**Component Rendering Model
-コンポーネントの機能はコンポーネントクラスで、描画は描画クラスでと分割している
--機能は一度書けばよく、レンダリングは複数用意できる
--ページ作成者はコンポーネントの見かけをタグを変更することで変えられる
-レンダーキットはコンポーネントクラスから特定クライアント向けのコンポーネントタグへのマップを定義する
--JSFはHTMLクライアント向けの標準HTMLレンダーキットを定義している
-レンダーキットはコンポーネントクラスに対してレンダークラスを定義している
--レンダークラスは対応するコンポーネントのそれぞれの描画方法を定義
---UISelectOneコンポーネントに対して、ラジオボタン、コンポボックス、リストボックス
---UICommandコンポーネントに対して、commandButtonタグ、commandLinkタグ
**Conversion Model
-JSFではコンポーネントをサーバ側のオブジェクトのプロパティに関連付ける
-コンポーネントがオブジェクトに関連付けられると、コンポーネントのデータのビューが2つある
--データの型で表現されるモデルビュー
--ユーザ向けのプレゼンテーションビュー
-JSFはモデルビューとプレゼンテーションビューのデータを自動的に変換する
-JSFでは変換処理をカスタマイズできる
--UIOutputコンポーネントにConverter実装を登録する
**Event and Listener Model
-アプリケーションイベント
--UIComponentによって生成される、特定のアプリ向けのイベント
--Eventオブジェクトは生成元のコンポーネントの情報とイベント情報をもつ
--コンポーネントにListener実装を登録することで、イベントがリスナーに通知される
---リスナー実装クラスを作成し、<actionListener>,<valueChangeListener>タグをコンポーネントタグに設定する
---管理ビーンのメソッドを実装し、コンポーネントタグの属性で参照
--ActionEvent
---ActionSourceを実装したコンポーネントがアクティブになったときに生成
---コンポーネントのimmediateがtrueの場合は、invoke applicationまたはapply request valuesフェーズで実行
--ValueChangeEvent
---UIInput(UIInput, UISelectOne, UISelectMany,UISelectBoolean)コンポーネントの値が変更されたとき生成
---バリデーションエラーがないときのみイベントが生成
---コンポーネントのimmediateがtrueの場合は、process validationsまたはapply request valuesフェーズで実行
-システムイベント
--アプリケーション実行中にUIComponentではなくオブジェクトによって生成される
-データモデルイベント
--UIDataの新規行が選択されたら発生
**Validation Model
-JSFはローカルデータがモデルデータに反映される前にバリデーションを行う
-標準バリデータクラスの実装と対応するタグ(JSFコアタグ)が提供されている
-コンポーネントタグにバリデータタグをネストすることで、バリデータを登録する
-すべてのUIInputコンポーネントにデフォルトバリデータを登録することも可能
-カスタムバリデータ(バリデータ実装とタグ)を作成できる
--Validator実装クラス、または管理ビーンのメソッド
--アプリケーションにバリデータ実装を登録、またはカスタムタグをコンポーネントに登録
**Navigation Model
-JSFのナビゲーションモデルによって、ページ遷移の定義と、遷移に必要な処理のハンドリングが行える
-ナビゲーションはアプリケーションのアクション(ボタン押下とか)によって次のページを決定するルールセット
--暗黙的ナビゲーション
--ユーザ定義ナビゲーション
---ルールリソースファイル(faces-config.xmlとか)に記述
---ルールは「from-view-idからfrom-outcomeの場合にto-view-idへ」の形式で
---JSFはコンポーネントのアクション属性の結果文字列(固定or管理ビーンのアクションメソッドの戻り値)を使ってルールを選択する
-ルールの決定はNavigationHandlerが行う
----
*Overviewof the JavaServer Faces Lifecycle
-一般的なWebアプリケーションのライフサイクル
--入力リクエストのハンドリング
--パラメータのでコード
--状態の変更と保存
--プラウザへのページの描画
-簡単なアプリケーションでは、JSFの自動的なライフサイクル管理を利用
-複雑なアプリケーションでは、自分でライフサイクル管理
-良いコンポーネントを作るためには、ライフサイクルのフェーズを理解する必要がある
----
*The Lifecycle of a JavaServer Faces Application
-クライアントがページに対してHTTPリクエストを送信したときに開始
-サーバがページのレスポンスを返却したら終了
-ライフサイクルは大きくexecuteとrenderの2フェーズ分けられる
-executeフェーズはコンポーネントツリーを扱うためにさらにサブフェーズに分けられる
--コンポーネントデータの変換、バリデート、コンポーネントイベントのハンドリング、ビーンへのコンポーネントデータ設定
-JSFページはviewと呼ばれるコンポーネントツリーにより表現される
--JSFはライフサイクル中に、過去のページサブミットで保存された状態を考えながらviewを生成する
-ライフサイクルでは2種類のリクエストを扱う
--initialリクエスト
---ページに対して初回のリクエスト
---Restore View と Render Response のみ実行される
--postbadk
---すでにプラウザに表示されているページ上でフォームをサブミット
---すべてのフェーズを実行
-別ページを描画するために、アプリケーションは新規にviewを作成しFacesContextインスタンスに保存する
-FacesContext.renderResponseで即時にビューをレンダリング
-FacesContext.responseCompleteでRender Responseフェーズをスキップ
--Webサービスなどの異なるアプリケーションへのリダイレクト
--JSFコンポーネントを含まないレスポンス生成
-コンポーネントのimmediate属性をtrueにすると変換、バリデーション、イベントハンドリングがApply Request Values Phaseで行われる
**Restore Viewフェーズ
-JSFページへのリクエストがあったとき
-ページビューのビルド
-イベントハンドラとバリデータをコンポーネントに紐付け
-FacesContextへのビューの保存
-ページへの初回リクエストの場合、空ビューを生成し、Render Responseフェーズへ
-ページへのボスとバックリクエストの場合、FacesContextにページ情報が保存されていて、クライアントまたはサーバに保存されている状態の情報を使ってビューをリストア
**Apply Request Valuesフェーズ
-ポストバックリクエストでビューがリストアされた後、ツリー内のコンポーネントはprocessDecodes()でリクエストパラメータから新しい値を抜き出し、コンポーネントのローカル値が設定される
--値の変換が失敗したらコンポーネントに対するエラーメッセージの生成とFacesContextへのキューイングが行われる
---エラーメッセージはRender Responseフェーズでバリデーションエラーメッセージとともに表示
-デコードまたはイベントリスナがFacesContext.renderResponseメソッドを読んだらRender Responseフェーズまでスキップされる
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
-コンポーネントのimmediate属性がtrueの場合は、バリデータ、変換、イベント処理が実行される
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-終了状態:
--コンポーネントには新しい値が設定
--メッセージとイベントがキューされている
**ProcessValidationsフェーズ
-ツリー中のコンポーネントに登録されたすべてのバリデータが実行(processValidatorsメソッド)される
--コンポーネントの属性としてしていされたバリデーションルールとローカルのコンポーネント値
-ローカル値が不正な場合は、FacesContextにエラーメッセージが追加され、Render Responseフェーズへ
--バリデーションと変換(Apply Request Valueフェーズ)のエラーメッセージが表示される
-バリデートメソッドまたはイベントリスナの処理中でFacesContext.renderResponseが呼ばれると、Render Responseフェーズへ
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
**Update Model Valuesフェーズ
-データバリデーションが済んだら、JSFはコンポーネントツリーを横断してサーバサイドのオブジェクトのプロパティにコンポーネントのローカル値を設定
--入力コンポーネント値属性で指定したビーンのプロパティを更新する
-ローカルデータがビーンプロパティに変換できない場合は、エラーメッセージを表示するRender Responseフェーズへ
-updateModelsメソッドまたはリスナの処理中でFacesContext.renderResponseが呼ばれると、Render Responseフェーズへ
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-このフェーズでキューイングされたイベントは、関連リスナーにブロードキャストされる
**Invoke Application フェーズ
-アプリケーションレベルのイベントハンドリング
--サブミット、リンク
-別リソースへのリダイレクティング、JSFコンポーネントを含まないレスポンス生成の場合は、FacesContext.responseCompleteを呼べば良い
-過去のリクエストの状態からビューが再構成され、コンポーネントがイベントを発生させていたら、関連リスナーにブロードキャストされる
-最後にRender Responseフェーズへ
**Render Responseフェーズ
-ビューをビルドし、適切なリソースにページレンダリングを委譲
-初回リクエストの場合、ページ上のコンポーネントはコンポーネントツリーに追加される
-ポストバックリクエストでエラーが発生した場合、元のページがレンダリングされる
--Apply Request Values, Process Validations, UpdateModel Values
--message, messagesタグがあればエラーメッセージが表示される
-ビューがレンダリングされた後は、レスポンスの状態が保存される
--続くリクエストのRestore Viewフェーズから利用可能
----
*Partial Processing and Partial Rendering
-単一コンポーネントに対して、処理とレンダリングが可能
-パーシャルリクエストはJSFではPartialViewContextで扱われる
-f:ajaxタグのexecute、render属性
----
*The Lifecycle of a Facelets Application
-Faceletsを使用したページに対して初回リクエストした場合、UIViewRootが作成されFacesContextに置かれる
-UIViewRootはFaceletsに適用され、ビューはコンポーネントを集めて作られる
-最新のビューがレスポンスとしてレンダリングされる
-レンダリング時に、ビューの状態が次回のリクエストのために保存される
--入力コンポーネントとフォームデータが保存される
-クライアントはビューとやり取りする。この時ビューが保存された状態からリストアされる
-リストアされたビューがJSFライフサイクルを通った結果、新規ビューまたは、現在のビューを再描画する
-同じビューが要求されたら、保存されたビューが描画される
-新規ビューが要求されたら、2番目へ
-新規ビューがレスポンスとしてレンダリングされる
----
*User Interface Component Model
**User Interface Component Classes
-JSFはUIコンポーネントクラスとUIコンポーネントの機能のインターフェースを提供
--コンポーネント状態の維持
--オブジェクトへの参照の管理
--イベントハンドリング
--標準コンポーネントの描画
-コンポーネントクラスを拡張してカスタムコンポーネントが作れる
-コンポーネントクラスはUIComponentBaseを継承
|UIComponent|抽象基底クラス||
|UIComponentBase|JSFのUIコンポーネントクラスの親。デフォルト状態と振る舞いを定義|UIComponentのサブクラス|
|UIColumn|UIDataコンポーネント中の単一カラム||
|UICommand|アクションを引き起こすコントローラ||
|UIData|DataModelで表現されるデータの集合を表現する||
|UIForm|データをサブミットするコントローラ。<form>タグ||
|UIGraphic|画像を表示||
|UIInput|ユーザ入力を受け取る。|UIOutputのサブクラス|
|UIMessage|ローカライズされたエラーメッセージを表示||
|UIMessages|ローカライズされたエラーメッセージのセットを表示||
|UIOutcomeTarget|リンクまたはボタンでハイパーリンクを表示||
|UIOutput|ページへのデータの出力を表示||
|UIPanel|子コンポーネントのレイアウトを管理||
|UIParameter|置換パラメータを表現||
|UISelectBoolean|ユーザに選択/未選択機能を提供|UIInputのサブクラス|
|UISelectItem|単一項目を表現||
|UISelectItems|項目セット全体を表現||
|UISelectMany|ユーザに項目グループから複数の項目を選択する機能を提供|UIInputのサブクラス|
|UISelectOne|ユーザに項目グループから単一の項目を選択する機能を提供|UIInputのサブクラス|
|UIViewParameter|リクエストのクエリパラメータを表現|UIInputのサブクラス|
|UIViewRoot|コンポーネントツリーのルート||
-コンポーネントクラスは振る舞いのインタフェースを実装
|ActionSource|アクションイベントを引き起こす。JSF2.xではduplicate|
|ActionSource2|ActionSourceを継承。アクションイベントハンドラメソッドの指定にUnified EL式を使える|
|EditableValueHolder|ValueHolderを継承。バリデーションやValueChangeイベント発生などの追加フィーチャ|
|NamingContainer|このコンポーネントのルートコンポーネントは一意のIDをもつ|
|StateHolder|コンポーネント状態がリクエスト間で保存される|
|ValueHolder|コンポーネントがローカル値を保持する。|
|SystemEventListenerHolder|SystemEventListenerのリストを保持する|
|ClientBehaviorHolder|ClientBehaviorインスタンスを付加できる|
-UICommandはActionSource2、StateHolderを実装
-UIOutputはStateHolder、ValueHolderを実装
-UIInputはEditableValueHolder、StateHolder、ValueHolderを実装
-UIComponentBaseはStateHolderを実装
-コンポーネント作成者はコンポーネントクラスと振る舞いインターフェースを直接つかう
-ページ作成者は標準コンポーネントをページにタグを埋め込むことでつかう
-多くのコンポーネントは異なる形式で描画できる
**Component Rendering Model
-コンポーネントの機能はコンポーネントクラスで、描画は描画クラスでと分割している
--機能は一度書けばよく、レンダリングは複数用意できる
--ページ作成者はコンポーネントの見かけをタグを変更することで変えられる
-レンダーキットはコンポーネントクラスから特定クライアント向けのコンポーネントタグへのマップを定義する
--JSFはHTMLクライアント向けの標準HTMLレンダーキットを定義している
-レンダーキットはコンポーネントクラスに対してレンダークラスを定義している
--レンダークラスは対応するコンポーネントのそれぞれの描画方法を定義
---UISelectOneコンポーネントに対して、ラジオボタン、コンポボックス、リストボックス
---UICommandコンポーネントに対して、commandButtonタグ、commandLinkタグ
**Conversion Model
-JSFではコンポーネントをサーバ側のオブジェクトのプロパティに関連付ける
-コンポーネントがオブジェクトに関連付けられると、コンポーネントのデータのビューが2つある
--データの型で表現されるモデルビュー
--ユーザ向けのプレゼンテーションビュー
-JSFはモデルビューとプレゼンテーションビューのデータを自動的に変換する
-JSFでは変換処理をカスタマイズできる
--UIOutputコンポーネントにConverter実装を登録する
**Event and Listener Model
-アプリケーションイベント
--UIComponentによって生成される、特定のアプリ向けのイベント
--Eventオブジェクトは生成元のコンポーネントの情報とイベント情報をもつ
--コンポーネントにListener実装を登録することで、イベントがリスナーに通知される
---リスナー実装クラスを作成し、<actionListener>,<valueChangeListener>タグをコンポーネントタグに設定する
---管理ビーンのメソッドを実装し、コンポーネントタグの属性で参照
--ActionEvent
---ActionSourceを実装したコンポーネントがアクティブになったときに生成
---コンポーネントのimmediateがtrueの場合は、invoke applicationまたはapply request valuesフェーズで実行
--ValueChangeEvent
---UIInput(UIInput, UISelectOne, UISelectMany,UISelectBoolean)コンポーネントの値が変更されたとき生成
---バリデーションエラーがないときのみイベントが生成
---コンポーネントのimmediateがtrueの場合は、process validationsまたはapply request valuesフェーズで実行
-システムイベント
--アプリケーション実行中にUIComponentではなくオブジェクトによって生成される
-データモデルイベント
--UIDataの新規行が選択されたら発生
**Validation Model
-JSFはローカルデータがモデルデータに反映される前にバリデーションを行う
-標準バリデータクラスの実装と対応するタグ(JSFコアタグ)が提供されている
-コンポーネントタグにバリデータタグをネストすることで、バリデータを登録する
-すべてのUIInputコンポーネントにデフォルトバリデータを登録することも可能
-カスタムバリデータ(バリデータ実装とタグ)を作成できる
--Validator実装クラス、または管理ビーンのメソッド
--アプリケーションにバリデータ実装を登録、またはカスタムタグをコンポーネントに登録
**Navigation Model
-JSFのナビゲーションモデルによって、ページ遷移の定義と、遷移に必要な処理のハンドリングが行える
-ナビゲーションはアプリケーションのアクション(ボタン押下とか)によって次のページを決定するルールセット
--暗黙的ナビゲーション
--ユーザ定義ナビゲーション
---ルールリソースファイル(faces-config.xmlとか)に記述
---ルールは「from-view-idからfrom-outcomeの場合にto-view-idへ」の形式で
---JSFはコンポーネントのアクション属性の結果文字列(固定or管理ビーンのアクションメソッドの戻り値)を使ってルールを選択する
-ActionListenerはアクションメソッドの結果と、アクションメソッドへの参照をNavigationHandlerに渡す
-ルールの決定はNavigationHandlerが行う
--現在表示されているページに対するナビゲーションルールを選択
--結果またはアクションメソッド参照をナビゲーションケースとマッチさせる
---アクションメソッド参照と結果の両方を同じナビゲーションケースにマッチさせる
---結果をナビゲーションケースにマッチさせる
---アクションメソッド参照をナビゲーションケースにマッチさせる
--ナビゲーションケースが見つからなければ、同じページを表示する
--ナビゲーションケースのマッチに成功すれば、render responseフェーズが始まり選択されたべーじが描画される