今日はJSFのLifecycleについてarticleを読んでいました。JSF - ライフサイクルに関する質問
Iは、これらの点を理解するためにいくつかの問題を持っている:
1 - フェーズ3:プロセス検証 - これは、コンポーネントがその新しい値を検証することができる位相です。 新しい値が有効で以前の値と異なる場合は、値変更イベントが作成されてキューに入れられます。この例では、ユーザーがフォームを送信する前に名前を変更した場合、ValueChangeEventオブジェクトはNameテキストボックスに対応するUIInputコンポーネントObjectによって作成され、このフェーズの最後で処理するためにキューに入れられます。これはvalueChangeInputメソッドバッキングBeanが呼び出されます。
JSFは古い値と新しい値の違いをどのように知ることができますか?ビューオブジェクトのインスタンスは2ですか?前の(要求前のもの)と新しい? (最後のプロセスによって追加されたFacesContextの値を持つ、リクエストの値を適用する)
2 - フェーズ5:アプリケーションの呼び出し - 要求のすべての値がバッキングBeanに正常に設定されると、適用要求値フェーズが処理されます。 私たちの場合、送信ボタンアクションメソッド。
したがって、FacesContextのインスタンスをUI要素(およびその値)をHtmlに変換する最後のフェーズ(レンダリング応答)に直接送信します。それで、(豆の)ゲッターメソッドが呼ばれるのはいつですか?
乾杯
最初の回答の回答:OK、Beanから値を取得します。しかし、Beanがリクエストスコープであれば、ビューを作成するとすべての値がnullになります。 (また、valueChangeハンドラを呼び出す必要がありますか?) 2点目について:私は理解していません。したがって、ライフサイクルの最初のポイントでViewインスタンス(FacesContext)の値を設定し、検証(または変換)してもエラーが発生しない場合は、Beanから同じ値を取得しますか?私はあなたの記事を今日の午後に見ました...しかし、まだ明らかではありません。私はもう一度練習する必要があります... – markzzz
beanのコンストラクタまたはpostconstructにプリセットされている場合、値はnullになりません。値変更リスナーは、サブミットされた値が初期モデル値と異なる場合に呼び出されます。エラーがなければ、モデル値を表示します(更新モデル値フェーズ中に提出された値から設定されます)。エラーがある場合は、エラーのためにモデル値を設定できないため、提示された値が表示されます。 – BalusC
一歩一歩(そうでなければもっと混乱させる)。 FacesContextは "古いモデル"(Beanに保存されている)によってgettedされた値を持つオブジェクトです。 (ライフサイクルの最初の時点で作成され、私はポストバック要求について話しました...) – markzzz