2012-03-13 6 views
1

とマネージドBeanは、同じBeanのセッションスコープとリクエストスコープの両方を持つことは可能ですか?は、私はあなたの専門家</p> <p>のための素朴な疑問を持っている複数のスコープ

たとえば、私はbean myBeanを持っています。それはSession-ScopedRequest-Scopedのどちらでもかまいませんか?

EDIT

いくつかの臨床試験を行った後、私はセッションスコープです最初のセッションを破棄することを決定しました。

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("SessionBean1"); 

リクエストスコープに再初期化できる方法はありますか?

答えて

0

複数のスコープを持つマネージドBeanにアノテーションを付けることができます。コードはエラーなしでコンパイルおよびデプロイされます(Mojarra 2.1.3/Glassfish 3.1.1でテスト済み)。

しかし、効果は、常に最も狭い範囲が適用されることになります。だから、@SessionScoped@RequestScopedでBeanに注釈を付けると、Beanは要求スコープになります。

1

defining it in a faces-config.xml fileで2つの異なるスコープで同じタイプのBeanを定義することは可能です。等#{sessionScope.myBean}#{requestScope.myBean}

プログラムFacesContextを使用して複数の範囲に同じBeanインスタンスを配置することが可能であるような式を介して参照されるとき、これは2つの異なるインスタンスをもたらすであろう。

ただし、このようなBeanが存在すると、設計上の瑕疵が示唆されます。

+0

このように2つの豆を持つ方が良いですか? – sameer

+0

難しいです。デザインに深刻な欠陥があることは間違いありません。 – BalusC

+0

@BalusC facescontextを使用してセッションBeanを破棄した後にスコープを要求するBeanを設定する方法はありますか? – sameer

関連する問題