【发布时间】:2012-02-13 08:17:04
【问题描述】:
我正在使用 spring webflow,但我需要在使用转换 ==> 评估表达式访问的方法中访问我的 HttpSession。 (所以在包含我的流程的 xml 文件中) 到目前为止,我还没有找到一种方法将它实际传递给我的方法。我已经查看了 flowrequestcontext 但到目前为止我还没有找到方法。
【问题讨论】:
标签: spring-webflow spring-webflow-2
我正在使用 spring webflow,但我需要在使用转换 ==> 评估表达式访问的方法中访问我的 HttpSession。 (所以在包含我的流程的 xml 文件中) 到目前为止,我还没有找到一种方法将它实际传递给我的方法。我已经查看了 flowrequestcontext 但到目前为止我还没有找到方法。
【问题讨论】:
标签: spring-webflow spring-webflow-2
我觉得你不需要一传RequestContext就传。你可以试试这个:
public class MyAction extends MultiAction{
public Event myMethod(RequestContext context){
HttpSession session = ((HttpServletRequest)context.getExternalContext().getNativeRequest()).getSession();
...
}
}
【讨论】:
我有一个非常相似的需求来访问流中的HttpSession。我是这样做的:
首先看一下externalContext特殊的EL变量:
它为您提供以下之一:
org.springframework.webflow.context.ExternalContext
ExternalContext 接口提供了一个名为getNativeRequest() 的方法,它应该返回一个HttpRequest 对象。 (至少在 weblflow 2.0.x 中)
因此,这意味着您应该能够使用以下内容制作表达式:
<evaluate expression="externalContext.nativeRequest.session" result="flowScope.information"/>
作为一个简单的测试,您可以使用如下表达式:
expression="externalContext.nativeRequest.session.id"
将您的会话 ID 传递给方法。
当然你可以使用类似的 EL 将会话传递给方法等。
【讨论】:
将对象(例如来自 flowScope)插入会话中,这对我有用:
<evaluate expression="externalContext.sessionMap.put('attributeName', flowScope.myObject)"/>
【讨论】:
这对我有用:
<set name="flowRequestContext.externalContext.sessionMap.myId" value="myObject.getId()" />
在客户端:
Long id = (Long) request.getSession().getAttribute("myId");
希望对你有帮助!
【讨论】: