リクエスト スコープの JSF 1.2 マネージド Bean がありましたが、これをセッション スコープ Bean にリファクタリングする必要がありました。これは、高価な操作を行って@PostConstruct
おり、実際には 1 回だけ実行する必要がある複数回呼び出されているためです。スコープをセッションに変更することの副作用は、次のようFacesContext
にしてもう注入できないことです。faces-config.xml
<managed-property>
<property-name>context</property-name>
<value>#{facesContext}</value>
</managed-property>
私が持っている場所
setContext(FacesContext ctx) {}
私のマネージドBeanで。
アクション メソッドの 1 つで、ExternalContext
/にアクセスするためのコンテキストが必要HttpServletResponse
です。呼び出したくない
FacesContext.getCurrentInstance();
私のアクションメソッド内ではなくsetContext(FacesContext ctx)
、モックテストを容易にするためにコンテキストインジェクションを分離できるように、何らかの形で外部から呼び出します。後でそれがリクエストごとのものであることを理解するためだけにsetContext()
内部を入れてみましたが、新しいリクエストが送信されるとリセットされました。@PostConstruct
FacesContext
ExternalContext
null
setContext(FacesContext ctx)
マネージド Bean 自体はセッション スコープですが、新しいリクエストをヒットするたびに自動的に魔法のように呼び出すにはどうすればよいですか?