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

Cra*_*gus 3 spring spring-mvc spring-aop

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

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

Manager配置如下:

 <bean name="/springapp.htm" class="foo.bar.controller.springcontroller">
        <property name="sessionBeanManager" ref="sessionBeanManager" />
    </bean>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我正在jsp页面输出

<c:out value="${sessionBean.beanValue}"></c:out>
Run Code Online (Sandbox Code Playgroud)

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

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

dig*_*oel 8

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

${sessionScope['scopedTarget.messageUtil'].flashMessages}
Run Code Online (Sandbox Code Playgroud)

这会在这个bean上调用getFlashMessages()

<bean id="messageUtil" class="mypackage.MessageUtilImpl" scope="session">
    <aop:scoped-proxy proxy-target-class="false"/>
    <property name="messageSource" ref="messageSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)