在我的应用程序中,我需要在一个屏幕上收集信息,然后在下一个屏幕上显示它。
我选择将此信息存储在一个范围设置为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?
答案 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);