BalusC の素晴らしい 2006 年の投稿http://balusc.blogspot.ch/2006/09/debug-jsf-lifecycle.htmlに含まれる情報を、Optimus Prime のさらに以前の投稿http://cagataycivici.wordpress.com/2005と正しく組み合わせた場合/12/28/jsf_component_s_value_local/次の結果が得られました。
私の理解:
- APPLY_REQUEST_VALUES フェーズでは、
- 入力値は、UI コンポーネントの submitValue プロパティに設定されます (例: inputComponent.setSubmittedValue ("test"))。
- PROCESS_VALIDATIONS フェーズでは、
- 必要に応じて、submittedValue プロパティ (おそらく inputComponent.getSubmittedValue ()) から同じ値が読み取られ、変換に使用されます。
- 変換が成功またはスキップされた場合、結果はコンポーネントの値プロパティに設定されます(例: inputComponent.setValue ("test"))。
- また、submittedValue はすぐに再度消去されます (例: inputComponent.setSubmittedValue (null)) 。
- (変換された) 値は、UI コンポーネント (おそらく inputComponent. getValue() )の value プロパティから読み取られ、検証されます。
- 検証後、バッキング Bean/モデルの格納された値が読み取られ (myBean.getInputValue () など)、新しく変換および検証された値と比較されます。異なる場合、valueChangeListener メソッドが呼び出されます。
- UPDATE_MODEL_VALUES フェーズでは、
- 新しく変換され、検証された値は、最終的にバッキング Bean のプロパティ フィールドに格納されます(例: myBean.setInputValue ("test"))。
質問:
- これは正しいです?
- POST とバッキング Bean への入力値の保存の間で何が行われるかを完全に理解するには、何か不足しているものはありますか?
- 入力コンポーネントで immediate="true" を使用すると、これらのイベントを APPLY_REQUEST_VALUES フェーズにシフトするだけですか? それとも、イベントのタイミング/順序以上のものを変更しますか?