代码之家  ›  专栏  ›  技术社区  ›  Craig Angus karan

SpringMVC应用程序-如何设置会话范围的bean值

  •  3
  • Craig Angus karan  · 技术社区  · 15 年前

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

    我已经选择将这些信息存储在一个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?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Manolo Santos    15 年前

    除非首先将SpringBean添加到模型中,否则它们在视图中是不可见的(在您的案例中是JSP)。

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

    model.addAttribute("sessionBean", sessionBean);
    
        2
  •  8
  •   digitaljoel    14 年前

    您可以在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>