从Spring Web Flow访问会话

时间:2014-07-23 15:01:05

标签: java spring spring-webflow spring-portlet-mvc

我在 Spring Portlet 中使用 Spring Web Flow (在portlet中非常重要)

如何从网络流中获取会话(HttpSession)对象???

我知道spring提供了externalContextflowRequestContext等特殊变量, 但我无法弄清楚如何从这些对象中获取会话

1 个答案:

答案 0 :(得分:0)

在Spring Portlet Webflow组合中: 您可以通过externalContext访问sessionMap。对于porlets,这是由PortletExternalContext实现的,它有两个可用的会话映射:globalSessionMap和sessionMap。 您可以按以下方式访问它:

    <evaluate expression="externalContext.globalSessionMap.yourSessionAttribute" result="store it somewhere"/>

    <evaluate expression="externalContext.sessionMap.yourSessionAttribute" result="store it somewhere"/>

在ServletContext中,这些映射返回相同的值。

<强>更新

如果您需要显式访问会话(portlet会话)本身而不是通过sessionMap的属性,如上所述,您可以将其作为:

   <evaluate expression="externalContext.nativeRequest.portletSession" result="store this session object somewhere"/>

这里nativeRequest对象是PortletRequest对象。

说完所有这些后,如果属性放在portlet会话的APPLICATION_SCOPE中,那么可以在servlet会话范围中访问它们。 我怀疑你是否可以获得HttpSession对象,但属性可以。