この質問に関するガイダンスが見つかりません。データベースと対話するため、独自のバッキング 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 タグではレンダリングされないものを出力するレンダリング コードを記述したい場合にあるようです。これは正しいです?