Spring Webflow を使用していますが、transition ==> 評価式を使用してアクセスされるメソッドで HttpSession にアクセスする必要があります。(私のフローを含むxmlファイルで)これまでのところ、実際にそれをメソッドに渡す方法をまだ見つけていません。flowrequestcontext を調べましたが、まだ方法が見つかりません。
4 に答える
RequestContext を渡せばすぐに渡す必要はないと思います。これを試すことができます:
public class MyAction extends MultiAction{
public Event myMethod(RequestContext context){
HttpSession session = ((HttpServletRequest)context.getExternalContext().getNativeRequest()).getSession();
...
}
}
オブジェクトを(たとえばflowScopeから)セッションに挿入するには、これがうまくいきました:
<evaluate expression="externalContext.sessionMap.put('attributeName', flowScope.myObject)"/>
HttpSession
フロー内でにアクセスするという非常によく似たニーズがありました。これが私がそれをした方法です:
まず、externalContext
特別な EL 変数を見てください。
次のいずれかが提供されます。
org.springframework.webflow.context.ExternalContext
ExternalContext
インターフェイスは、オブジェクトを返すメソッドを提供しgetNativeRequest()
ますHttpRequest
。(少なくとも weblflow 2.0.x では)
Javadoc は次のとおりです。 http://static.springsource.org/spring-webflow/docs/2.0.x/javadoc-api/org/springframework/webflow/context/ExternalContext.html#getNativeRequest ()
つまり、次のようなものを使用して式を作成できるはずです。
<evaluate expression="externalContext.nativeRequest.session" result="flowScope.information"/>
簡単なテストとして、次のような式を使用できます。
expression="externalContext.nativeRequest.session.id"
セッションIDをメソッドに渡します。
もちろん、同様の EL を使用してセッションをメソッドなどに渡すこともできます。