は@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(および@FacesValidators)が追加なしで自動的にCDIおよびEJBインジェクションの対象になります。努力。