3

我正在使用 spring webflow,但我需要在使用转换 ==> 评估表达式访问的方法中访问我的 HttpSession。(所以在包含我的流程的 xml 文件中)到目前为止,我还没有找到一种方法来实际将它传递给我的方法。我已经查看了 flowrequestcontext 但到目前为止我还没有找到方法。

4

4 回答 4

9

我认为你不需要一通过RequestContext就通过它。你可以试试这个:

public class MyAction extends MultiAction{      
    public Event myMethod(RequestContext context){
        HttpSession session = ((HttpServletRequest)context.getExternalContext().getNativeRequest()).getSession();
        ...
    }
}
于 2012-02-28T16:39:34.353 回答
5

将对象(例如来自 flowScope)插入到会话中,这对我有用:

<evaluate expression="externalContext.sessionMap.put('attributeName', flowScope.myObject)"/>
于 2013-10-24T11:49:47.780 回答
3

我有一个非常相似的需求来访问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 将会话传递给方法等。

于 2012-03-08T20:51:56.677 回答
1

这对我有用:

<set name="flowRequestContext.externalContext.sessionMap.myId" value="myObject.getId()" />

在客户端:

Long id = (Long) request.getSession().getAttribute("myId");

希望能帮助到你!

于 2014-04-25T08:46:24.767 回答