数回の検索で、これはしばらくの間問題となっていたようです。私は次のようなFacesConverterを書いています。オブジェクトカテゴリはJPAエンティティであり、CategoryControlは、それをフェッチするDAOです。FacesConverterへのCDI注入
@FacesConverter(value = "categoryConverter")
public class CategoryConverter implements Converter {
@Inject private CategoryControl cc;
public CategoryConverter() { }
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (cc != null) return cc.getByName(value);
System.out.println("CategoryConverter().getAsObject(): no injection!");
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Category)) return null;
return ((Category) value).getName();
}
}
これまでに推測したように、私は決して注射を受けません。私はどちらか、この仕事をすることはできませんしかし、この:
Workaround for this problem: create this method in your localeController:
public Converter getConverter()
{
return FacesContext.getCurrentInstance().getApplication().createConverter("localeConverter");
}
and use converter="#{localeController.converter}" in your h:selectOneMenu.
のように見えた、this pageからこの回避策を得ました。私のバッキングBeanはコンバーターを作成して返しますが、コンバーターにオブジェクトを注入することはありません。
私はMyFaces CODI 1.0.1を使用しています。現在のGlassFish/Weldコンテナを使用します。コンバータを使用しないようにコードを再作成する前に誰もが解決策を提案できますか?
さて、私は冒されるでしょう。私は基本的にコンバータの中から式を評価するためにアプリケーションを呼び出す回避策を実装しましたが、これはもっとエレガントだと思います。だから別の質問がある@BalusC - あなたがJSFに関する本を書いた時ではない? – AlanObject
ようこそ。本書に関して、あなたはこれを尋ねた最初の人物ではありません。 – BalusC
あなたはあまり書く必要がありません - あなたがすでに書いたものをすべて編集してください。真剣に私はあなたにコラボレーションに興味があるならば、私に知らせて、本の概要を考えました。 – AlanObject