3

私のアプリケーションでは、ある画面で情報を収集し、次の画面に表示する必要があります。

この情報を、セッションとして設定されたスコープを持つ 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 として作成されていないと思いますか?

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 に答える