は@FacesConverter
適格な注射標的ではありません。@ManagedBean
またはに置き換えます@Named
。CDIも使用したいので、を使用します@Named
。
@Named
@ApplicationScoped // I assume that your converter doesn't have any state.
public class MyConverter implements Converter {
// ...
}
ビューでの参照方法を変更するだけで済みます。もう頼ることはできませforClass
ん。明示的に指定する必要があります#{myConverter}
。
<h:inputSomething ... converter="#{myConverter}" />
また
<h:inputSomething ...>
<f:converter binding="#{myConverter}" />
</h:inputSomething>
本当に@FacesConverter
を支持する必要がある場合はforClass
、JNDIによって手動でEJBを取得する必要があります。具体的な例は、このブログ記事に示されています。ただし、CDIBeanの場合はわかりません。
JSFの担当者は、この恥ずかしい見落としを確認しており@FacesConverter
、今後のJSF2.2で適格な注入ターゲットを作成します。JSF仕様の問題763JSF2.3も参照してください。
参照:
JSFユーティリティライブラリOmniFacesを使用している場合、または使用を許可している場合は、バージョン1.6以降、OmniFaces JARをインストールするだけで、Webアプリ内/WEB-INF/lib
のすべて@FacesConverter
のs(および@FacesValidator
s)が追加なしで自動的にCDIおよびEJBインジェクションの対象になります。努力。