Spring MVC Application - 如何设置会话范围的bean值

时间:2010-01-25 14:33:34

标签: spring spring-mvc spring-aop

在我的应用程序中,我需要在一个屏幕上收集信息,然后在下一个屏幕上显示它。

我选择将此信息存储在一个范围设置为session的bean中(在初始数据收集屏幕后将用于其他几个屏幕)

Manager配置如下:

 <bean name="/springapp.htm" class="foo.bar.controller.springcontroller">
        <property name="sessionBeanManager" ref="sessionBeanManager" />
    </bean>

bean的配置如下:

<bean id="sessionBean" class="foo.bar.sessionBean" scope="session">
    <aop:scoped-proxy/>
   <property name="beanValue" value="defaultValue" />
</bean>

<bean id="sessionBeanManager" class="foo.bar.sessionBeanManagerImpl">
    <property name="sessionBean" ref="sessionBean"/>
</bean>

我正在jsp页面上输出

<c:out value="${sessionBean.beanValue}"></c:out>

但每当我加载页面时,值为空?

在我看来,bean正在加载正常但没有填充值,这导致我认为会话bean没有被填充或者bean没有被创建为会话bean?

2 个答案:

答案 0 :(得分:8)

您可以在jsp中的EL中使用以下语法引用spring会话bean。

${sessionScope['scopedTarget.messageUtil'].flashMessages}

在这个bean上调用getFlashMessages()

<bean id="messageUtil" class="mypackage.MessageUtilImpl" scope="session">
    <aop:scoped-proxy proxy-target-class="false"/>
    <property name="messageSource" ref="messageSource" />
</bean>

答案 1 :(得分:2)

除非先将它们添加到模型中,否则Spring bean在视图(在您的情况下为JSP)中不可见。

您必须将sessionBean添加到控制器中的模型,以使其可供视图使用。

model.addAttribute("sessionBean", sessionBean);