2014-07-23 5 views
0

Я использую Spring Web Flow внутри Spring Portlet (что важно в портлет)Доступ к сеансу с Spring Web Flow

Как я могу получить сеанс (HttpSession) объект из веб-потока ???

Я знаю, что пружина обеспечивает специальные переменные, как externalContext или flowRequestContext, , но я не могу понять, как получить сеанс от объектов

ответ

0

В комбинации Spring Portlet WebFlow: Вы можете получить доступ к sessionMap через externalContext. Для porlets реализация этого значения - PortletExternalContext, которая имеет две доступные карты сеанса: globalSessionMap и sessionMap. Вы можете получить доступ к нему, как:

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

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

В ServletContext, эти карты возвращают то же значение.

UPDATE:

Если вам нужен явный доступ к сессии (портлет сессия) сама вместо атрибутов через sessionMap, как упоминалось выше, вы можете получить его как:

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

Здесь nativeRequest объект PortletRequest объект.

Сказав все это, если атрибуты помещены в APPLICATION_SCOPE в сеансе портлета, к ним можно получить доступ в области сеанса сервлета. Я сомневаюсь, что вы можете получить объект HttpSession как таковой, но атрибуты могут быть.