0

古いコードは、ServletFilter の最初のリクエストで@SessionScoped @ManagedBean(つまり) を作成し、(まだ存在しない場合) に配置します。UserSessionHttpSession

では、EL 式がその ManagedBean に初めてアクセスしようとするとどうなるでしょうか? UserSession(手動で作成されたものと JSF から作成されたもの)の 2 番目のインスタンスを期待していました。そのため、コンストラクターを計測@PostConstruct@PreDestroy、いくつかのログ ステートメントを使用しました。現在、JSF は作成しないようですUserSession- コンストラクターのみが呼び出されます。

これは可能ですか?JSF は からその Bean を再利用できますHttpSessionか? @SessionScoped豆を入れるのは合法HttpSessionですか?

4

1 に答える 1

2

あなたの観察は正しいです。JSF のカバーの下では、JSF 自体も、セッション スコープのマネージド Bean を の属性として格納しますHttpSession。したがって、それがすでに存在する場合は、どのようにそこにたどり着いたかに関係なく、再利用されます。

それが良いか悪いかは、具体的な機能要件によって異なります。あなたの驚きを考えると、それは悪いことであり、アプローチまたは機能要件のいずれかを修正する必要があると思います。おそらく、特定のセッション属性を@ManagedProperty.

于 2012-09-13T15:30:19.133 に答える