以下の抜粋に示すように、 f:viewParamを使用して、以下に示すように xhtml ページにf:metadataセクションを定義しました。
<html xmlns="http://www.w3.org/1999/xhtml" (...)>
<f:metadata>
<f:viewParam name="cust-id" value="#{CustomerCEVController.customer}"
converter="#{customerConverter}" converterMessage="blah blah."
required="false"
/>
</f:metadata>
<ui:composition template="/templates/commonLayout.xhtml">
<ui:define name="title">
(...)
<ui:define name="body">
(...)
.. cust-idパラメータの CustomerConverter クラスを宣言しました。プロパティ cust-id のコンバーター クラス getAsObject メソッドとバッキングBeanカスタマーフィールドのゲッター メソッドはすべて、 UPDATE MODEL VALUESライフで呼び出されるカスタマーフィールドのセッター メソッドの前に呼び出されるPROCESS VALIDATIONS JSF ライフサイクル フェーズで呼び出されます。サイクルフェーズ。その結果、ゲッターが呼び出された時点で、フィールドはコンバーターによって適切に初期化されません。したがって、シーケンスは次のようになります (ここで、CustomerCEVController はバッキング Bean クラスです)。
[ PROCESS VALIDATIONS フェーズ開始 ]
[CustomerConverter#getAsObject が呼び出されました]
[CustomerCEVController#getCustomer が呼び出されました]
[ PROCESS VALIDATIONS フェーズが終了しました ]
[ UPDATE MODEL VALUES START ]
[CustomerCEVController#setCustomer が呼び出されました]
ログ出力の散在と登録したライフサイクル リスナーに基づいてシーケンスを報告しています。何か不足していますか?そうでない場合、顧客フィールドがアクセスされる前にコンバーターによって適切に設定されていることを確認するにはどうすればよいですか?