0

私は CDI (Weld) を使用していますが、問題に直面しました。私は一連の Primefaces を持っていselectOneMenuます.1つで選択された値は、次の値を設定するために使用されます。問題は、ManagedBean で SessionScoped を使用して、既に選択されている項目の値を取得する必要があることです。この場合、JSF には ViewScoped があり、これが非常に役立つことはわかっていますが、CDI を使用しているため、これはオプションではありません。Seam もオプションではありません。RequestScoped などを使用する回避策がありますか、それとも Bean で SessionScoped を本当に使用する必要がありますか?

ありがとう!

4

3 に答える 3

2

JSF マネージド Bean と CDI Bean を同時に使用することを妨げるものは何もありません。たとえば、@javax.faces.bean.ViewScoped @javax.faces.bean.ManagedBeanCDI @javax.inject.InjectBean を含めることができます。したがって、ビュー スコープが問題の解決に適している場合は、そのまま使用してください。ストック GlassFish 3.1.2 サーバー (JSF 2.1) でこれをテストしました。

もう 1 つのオプションは、CDI @javax.enterprise.context.ConversationScoped( http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/scopescontexts.html#d0e1841 ) を使用することです。これは、会話を開始および終了できる明確に定義された開始点と終了点を持つ一連の要求/ビューを含むシナリオで最適に機能します。

于 2012-05-24T17:57:43.513 に答える
1

MyFaces CODIでViewScopeを確認するか、ViewScopeの独自のCDIimplを作成してください:)

于 2012-05-25T03:09:18.240 に答える
0

Facescontext ビュールート マップでの ajax コールバック中に Bean が生きているので、独自のスコープを作成するために CDI 拡張機能だけを使用してください。 -the-viewscoped-jsf-annotation-to-cdi/

于 2013-04-28T22:15:57.423 に答える