Доступ к сеансу из 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 как таковой, но атрибуты могут быть.