2016-10-02 13 views
1

nullである私は、このようなコンバータを内蔵しています:クロサギ科2.3.0-M06、@PersistenceContextフィールドが

@FacesConverter(managed = true, value = "myConverter") 
public class MyConverter implements Converter { 
    @PersistenceContext(unitName = MyService.PERSISTENCE_NAME) 
    private EntityManager entityManager; 
    ... 
} 

問題がのEntityManagerがnullであるということです。 faces-config JSFのバージョンは2.3ですが、Mojarra 2.3.0-m06が使用されています。 Application#createConverter() implementationでは、最初のifの本体にジャンプしますが、コンバーターは作成されません。 the converter is a beanの場合、エンティティマネージャはnullではありません。

答えて

1

私は、次の内容のWEB-INFディレクトリbeans.xmlのファイルを追加するために必要な:あなたはこれを追加するために必要な理由を説明する

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
     bean-discovery-mode="all"> 
</beans> 
+0

ケアを?あなたはそれがどこでも言及されているのを見つけましたか – Kukeltje

+0

新しい機能の例が見つかりました:https://github.com/AnghelLeonard/JSF-2.3/tree/master/JSF23InjectInConverterValidator私のプロジェクトとこの例との違いは、このXMLファイルだけでした。それから、このファイルはすべてのCDIアプリケーションで必要とされていることがわかりましたが、以前はそれがなくても問題はありませんでした。 – Vladiator

+1

@Kukeltje FacesConverterはアノテーションを定義するBeanではないため、デフォルトではCDIで処理されません。ネイティブJSFコンバーターは永続コンテキストのインジェクションをサポートしていませんが、PersistenceContext自体がCDIインジェクションではないにもかかわらず、CDI Beansはデフォルトでそれと統合されます。だからここにbeans.xmlが必要です。 –

関連する問題