我正在使用 spring webflow,但我需要在使用转换 ==> 评估表达式访问的方法中访问我的 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 将会话传递给方法等。
这对我有用:
<set name="flowRequestContext.externalContext.sessionMap.myId" value="myObject.getId()" />
在客户端:
Long id = (Long) request.getSession().getAttribute("myId");
希望能帮助到你!