0

この質問に関するガイダンスが見つかりません。データベースと対話するため、独自のバッキング Bean を必要とする複合コンポーネントを作成しています。

新しいコンポーネントは、何らかのユーザー アクションの結果として、他のバッキング Bean に値を設定できる必要もあります。

これを行うには、@FacesComponent Java クラスまたは通常の @Model/@Named (CDI アノテーションを使用) タイプの Bean を作成する必要がありますか? どちらかを使用できる場合、どちらか一方の利点は何ですか?

二次的な質問: CDI @Inject を @FacesComponent に使用して、DAO などを取得できますか?

更新: 通常のバッキング Bean で次のコードを使用して cc.attr オブジェクトにアクセスできることを発見しました。

  FacesContext fc = FacesContext.getCurrentInstance();
  Object obj = fc.getApplication().evaluateExpressionGet(fc, 
            "#{cc.attrs.model.location}", Location.class);

これにより、属性を取得できます。私はまだそれらを書く方法を知りません。

したがって、@FacesComponent を実行する唯一の本当の理由は、通常の Facelets タグではレンダリングされないものを出力するレンダリング コードを記述したい場合にあるようです。これは正しいです?

4

1 に答える 1

1

BalusC はこのスレッドでこの基本的な質問に答えたと思います。

主な利点は、Bean で実行される EL 式と結び付けようとするのではなく、UIComponent が通常アクセスできる属性に @FacesComponent がアクセスできることです。

于 2011-08-23T19:16:07.547 に答える