Spring webflow - 访问会话

时间:2013-11-13 09:54:40

标签: spring session spring-mvc spring-webflow

我试图在spring webflow中获取session属性,但它不起作用。在某些控制器中我有:

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({)'

我的第一个问题是,如何在网络流程中获得sessionUser

我也试过调用控制器方法,因为在控制器方法中我可以获得sessionUser,但它不起作用。

我的第二个问题是,如何在webflow中调用控制器方法?

1 个答案:

答案 0 :(得分:2)

Spring Web Flow中没有会话范围。要访问Session上的对象,您需要使用外部Context隐式el变量,如下所示:

<if test="externalContext.sessionMap.sessionUser.getLogin() != null" then="startView" else="start" />