4

BalusC または JSF の専門家の 1 人が、JSF ライフサイクルの細かい点、特にレンダリングを理解するのに役立つことを願っています。

私が理解するのに苦労しているのは、レンダリング応答中にモデルから値が取得され、ユーザーに表示されることです。現在、検証エラーがあった場合、モデルは更新されないため、レンダラーはコンポーネント ツリーからの無効な値をユーザーに表示する必要があります。これで問題ありませんが、レンダラーはモデルから読み取るか、コンポーネント ツリーから読み取るかをどのように判断するのでしょうか? コンポーネント ツリーからのものである場合、リクエストが検証に合格し、イベント ハンドラーがレンダリングの直前にモデル値を更新した場合、それらの値はユーザーに反映されますか?

私はjsfライフサイクルについてたくさん読んだことがありますが、質問に答えるのに十分なほど深く掘り下げられたものは何も見つかりませんでした。これがどのように機能するかを正確に理解したいです。

4

1 に答える 1

5

リクエスト値の適用フェーズでは、すべてのリクエスト パラメータが によって送信された値として設定されUIInputますsetSubmittedValue()

検証段階では、値が有効な場合にのみ、送信された値が に設定されnull、変換および検証された値が によって設定さUIInputsetValue()ます。したがって、値が有効でない場合、送信された値は に設定されませんnull

モデル値の更新フェーズでは、モデル値がその値で更新されます。

レンダリング レスポンス フェーズで、UIInputレンダラーは最初にgetSubmittedValue()が返されないかどうかを確認しますnull。そうでない場合 (検証が失敗した場合)、それを表示します。それ以外の場合は、モデル値を表示するだけです。

于 2012-06-10T00:27:36.177 に答える