【问题标题】:Spring webflow - how to pass the session in evaluate expression?Spring webflow - 如何在评估表达式中传递会话?
【发布时间】:2012-02-13 08:17:04
【问题描述】:

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

【问题讨论】:

    标签: spring-webflow spring-webflow-2


    【解决方案1】:

    我觉得你不需要一传RequestContext就传。你可以试试这个:

    public class MyAction extends MultiAction{      
        public Event myMethod(RequestContext context){
            HttpSession session = ((HttpServletRequest)context.getExternalContext().getNativeRequest()).getSession();
            ...
        }
    }
    

    【讨论】:

      【解决方案2】:

      我有一个非常相似的需求来访问流中的HttpSession。我是这样做的:

      首先看一下externalContext特殊的EL变量:

      externalContext

      它为您提供以下之一:

      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 将会话传递给方法等。

      【讨论】:

        【解决方案3】:

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

        <evaluate expression="externalContext.sessionMap.put('attributeName', flowScope.myObject)"/>
        

        【讨论】:

          【解决方案4】:

          这对我有用:

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

          在客户端:

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

          希望对你有帮助!

          【讨论】:

            猜你喜欢
            • 2012-09-05
            • 1970-01-01
            • 2014-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-07
            • 2016-05-08
            • 1970-01-01
            相关资源
            最近更新 更多