1

JSFのビュースコープのバッキングBeanに関するその他の問題。ビュースコープのバッキングBeanで内部クラスを作成しました。その内部クラスはコンバーターです。バッキングBean(この場合はselect-oneアイテムのリスト)からいくつかのフィールドにアクセスする必要があるため、内部クラスが必要です。突然、リクエストのたびにバッキングBeanの@PostConstructメソッドが呼び出されることがわかりました。いくつかの検査の後、私はコンバーター属性が問題であることに気づきました、そして、いくつかのグーグル検索の後、これの(いつものように)BalusCのブログの理由を見つけてください。

だから、私の質問は、コンバーターを正常に動作させる方法と、変換に必要なデータのリストを用意する方法です。

4

1 に答える 1

1

コンバーターをスタンドアロンクラスに分離しApplication#evaluateExpressionGet()、コンバーターメソッド内のビュースコープのBeanインスタンスにアクセスするために使用します。

ViewBean viewBean = context.getApplication().evaluateExpressionGet(context, "#{viewBean}", ViewBean.class);

ただし、これは少し厄介なデザインです。<f:selectItem>利用可能なアイテムのリストに基づいて選択されたアイテムを正しく変換するという具体的な機能要件を理解している場合、代替手段は、物理/<f:selectItems>コンポーネントに基づいて変換する汎用コンバーターを使用することです。JSFユーティリティライブラリOmniFacesには、まさにこの目的のために、SelectItemsConverterとの2つのコンバータがありSelectItemsIndexConverterます。

于 2013-01-11T13:22:26.867 に答える