3

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

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

管理器配置如下:

 <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?

4

2 回答 2

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>
于 2010-12-04T00:52:23.460 回答
2

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

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

model.addAttribute("sessionBean", sessionBean);
于 2010-01-26T13:04:14.860 回答