The JSF application lifecycle
Restore view phase
① 初回アクセスの場合は、
UI
コンポーネントツリー(
root
のみ)し、
renderResponse
フラグを立てます、このフラグを立つと、他のフューズはスキップされて「
Render response phase
」に移ります
② 二回目以降の
Restore view phase
では、全て保存されている
UI
コンポーネントツリーを復元します。
③ ビューについては:
If the view doesn't already exist, the JSF controller creates it. JSF controller uses this ID if the view already exists
個人理解:
1)
the view doesn't already exist
:ページのはじめてのリクエストの場合。
if the view already exists
:ページへの
postback
リクエストの場合(ボタンをクリック):
2)
Managed-Bean
が
request
の場合:この
Managed-Bean
がインスタンス化されます。
Managed-Bean
が
session
の場合:既存の
Managed-Bean
のインスタンスを取得します。
3)あるコンポーネントの
render
属性が
false
である場合:このコンポーネントだけは検証を実行しなくて、
Render response phase
に移ります。
Apply request values phase
①
Web
ブラウザから送信された入力値(入力コンポーネントと選択コンポーネントに入力された値)を取り出し、復元済みの
UI
コンポーネントツリーに格納するフューズです。
②
each component in the tree retrieves its new value and store it locally. Component values are typically retrieved from the request parameters
。
③
command button
の
immediate
属性に
true
を指定すると、このフューズで
action method
が実行されます、「
cancel
」ボタンのように、「入力智の検証」と「モデル値の更新」も不要な場合は、このようにします。
Process validations phase
①
UI
コンポーネントに適用された値の検証を行う。コンバータによる型変換とバリデータによる検証を行います。入力コンポーネントと選択コンポーネントだけになります。
②
途中でエラーが発生しても処理を閉めることはなく、すべての対象コンポーネントに対して行われます。型変換や検証で一回でもエラーが発生すると、
renderResponse
フラグを立てます。
個人理解:
バリデータ検証ルールを置いている場所:
1)エンティティ
Bean
の
xml
ファイルに追加できる。
2)
JSP
のページ定義ファイルに追加できる
3)コンポーネントの
validator
属性に
method binding
を追加できる
4)
コンポーネントに
<af:validator>
を追加して、作成したバリデータクラス(Faces-config.xmlに添加
)とバインディングします。
Update model values phase :
①
対象のマネージド
Bean
は、各コンポーネントの
value
属性に指定された
ValueExpression
式を評価することで特定します。ただし、この処理の対象になる
UI
コンポーネントは、入力値を伴うコンポーネントだけとなります。
個人理解:
もしあるコンポーネントに値を入力しなければ、このコンポーネントがこのフューズを実行しない。
Invoke application phase :
①
最初に、登録されたアクションリスナを次々と実行し、最後にアクションメソッドを実行します。
Render response phase:
①
同じページに遷移する場合:既存の
UI
コンポーネント.ツリーを使用して
HTML
を作成します。
②
他のページに遷移する場合:他のページの
UI
コンポーネント.ツリーを作成し、クライアントに返す
HTML
を作成します。
個人理解:
このフューズは、マネージド
Bean
のプロパティを
getter()
メソッドで画面に渡します。
参考ファイル:
ADF事件调用顺序 init page -> call components getter-> call value getter
requetの場合: click button-> call components getter-> call value getter-> call button actionlistener -> call button action
sessionの場合:
click button-> call button actionlistener -> call button action