2013-11-13 5 views
2

Я пытаюсь получить атрибут сеанса в Spring Webflow, но он не работает. В некоторых контроллерах у меня есть:Spring webflow - доступ к сеансу

User u = userDao.getUser(userName); 
session.setAttribute("sessionUser", u); 

В JSP, я могу получить его, и он работает отлично:

${sessionScope.sessionUser.getLogin()} 

Я пытался что-то вроде этого:

<decision-state id="isUserLogged"> 
    <if test="sessionUser.getLogin() != null" then="startView" else="start" /> 
</decision-state> 

, но я получаю ошибка:

EL1008E:(pos 0): Field or property 'sessionUser' cannot be found on object of type 'org.springframework.webflow.engine.impl.RequestControlContextImpl' 

или

<decision-state id="isUserLogged"> 
     <if test="${sessionScope.sessionUser.getLogin()}" then="startView" else="start" /> 
    </decision-state> 

ошибка:

EL1041E:(pos 1): After parsing a valid expression, there is still more data in the expression: 'lcurly({)' 

Мой первый вопрос, как я могу получить в WebFlow sessionUser?

Я также попытался вызвать метод контроллера, потому что в методе контроллера я могу получить sessionUser, но он не работает.

Мой второй вопрос: как я могу вызвать метод контроллера в веб-потоке?

ответ

2

В Spring Web Flow отсутствует SessionScope. Чтобы получить доступ к объекту на сеансе, вместо этого вам нужно использовать неявный el-variable externalContext примерно так:

<if test="externalContext.sessionMap.sessionUser.getLogin() != null" then="startView" else="start" /> 
Смежные вопросы