1

専門家の皆さんに簡単な質問があります

同じ Bean に対して Session-Scoped と Request-Scoped の両方を持つことは可能ですか?

たとえば、私は BeanmyBeanを持っSession-ScopedていRequest-Scopedます。

編集

いくつかの試行を行った後、セッション スコープである最初のセッションを破棄することにしました。

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

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

4

2 に答える 2

1

ファイルで定義することfaces-config.xmlにより、2 つの異なるスコープで同じタイプの Bean を定義することができます。、 など#{sessionScope.myBean}の式で参照すると、2 つの異なるインスタンスが生成されます。#{requestScope.myBean}

を使用して、プログラムで同じ Bean インスタンスを複数のスコープに配置することができますFacesContext

ただし、そのような Bean の存在は、設計上の欠陥を示唆しています。

于 2012-03-13T09:16:46.617 に答える
0

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

ただし、常に最も狭い範囲が適用されるという効果があります。@SessionScopedそのため、Bean にandでアノテーションを付けると@RequestScoped、Bean はリクエスト スコープになります。

于 2012-03-13T08:17:35.480 に答える