2011-08-23 4 views
7

私はDAOと対話する必要がある(複合)コンポーネントを作成しています。ここではJavaの部分が宣言されている方法です:リソースをUIComponentに注入する(別名CDIはここで動作しますか?)

:私は顔アノテーションを試してみました

@Inject private LocationControl lc; 

そして、それは動作しませんでした:

@FacesComponent(value="selectLocation") 
public class SelectLocation extends UINamingContainer { 

は、DAOオブジェクトを取得するには、私はCDIアノテーションを試してみました

@ManagedProperty (value = "@{locationControl}") private LocationControl lc; 

どちらの場合も何も起こりません。lcプロパティは、コンストラクタの終了後にnullになります。

私はすべての私の裏豆にCDIを使用し、それはすべて動作します。これは、GlassFish 3.1.1の内部でWeldを使用することになります。どのようにリソースを取得するための任意の提案?

+0

ダン - 私はjava.inject.Namedまだありません喜びを試してみました。 – AlanObject

+0

@RequestScopedを追加すると、アプリケーションをデプロイできなくなります。WELD-001437通常のスコープ付きbeanクラスjavax.faces.component.UIComponentは、型がfinalであるか、最終メソッドを含んでいるためプロキシーできません。public final javax.faces.component。 TransientStateHelper javax.faces.component.UIComponent.getTransientStateHelper()。 – AlanObject

+0

作成されたコンポーネントを使用すると、ユーザーは、そのようなオブジェクトのデータベース(JPA)を参照することによってLocationオブジェクトを選択できます。そのためには、私はDAOに直接的または間接的にアクセスする必要があります。しかし、私のDAOは他のCDIマネージドBeanと違いはありません。JPAアノテーションは@PersistenceContextのようなものです。 beans.xmlに何かがあるかどうかを調べるためにCDI仕様を読んでいます。 – AlanObject

答えて

5

私は今のところ回避策を持っています。これは基本的にCDIなどのボイラープレートコードに入れています。 al。捨て去ることになっています。私は今この方法を持っています:

public LocationControl getLocationControl() { 
    if (lc != null) return lc; 
    FacesContext fc = getFacesContext(); 
    Object obj = fc.getApplication().evaluateExpressionGet(fc, "#{locationControl}", LocationControl.class); 
    if (obj instanceof LocationControl) lc = (LocationControl) obj; 
    return lc; 
} 

誰かがより良い解決策を持っているかどうかを知りたいと思います。

2

コンポーネントにも機能するのかどうかわかりませんが、CDI + MyFaces CODIでは@マークを付けることができます。 @Injectを使用できるはずのPhase-Listener。動作しない場合は、JIRAで機能要求を作成することができます。彼らはかなり速く、頻繁なリリースがあります。

または、次のいずれかを使用します。 MyBean myBean = BeanManagerProvider.getInstance()。getContextualReference(MyBean.class);手動で

2

回避策なしでこの作業を行う方法はありますか?

はい、通常の方法でバッキングビーンを使用してください。 DRYそれを維持する複合再利用可能なタグファイル/で、必要に応じて

<x:someComponent value="#{someBean.someProperty}" /> 

ラップは:私はあなたがそこに何かに思っていました

<my:someComponent /> 
関連する問題