Доступ к сеансу из Spring Web Flow

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

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

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

1 ответ

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

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

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

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

ОБНОВИТЬ:

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

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

Здесь объект nativeRequest является объектом PortletRequest.

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

Другие вопросы по тегам