0

Struts2 を使用して Web アプリケーションを開発しています。以前はStruts1で作業していました

フォーミュラーの値を変更すると、参照されたセッション オブジェクトの値も更新されるように、セッション オブジェクトを JSP に直接参照する方法はありますか。

<s:textfield name="%{#session.order.amount}"/>

たとえば、getter と setter で属性 amount を持つセッション オブジェクトの順序があります。

にいくつかの値を入力してtextfieldからページを送信した後、セッションの値が更新されなかったようです。

session.put()現在、アクション属性のセッター内に関与する別のアプローチを使用しています。個人的には、現在のソリューションが嫌いです。

4

2 に答える 2

1

デフォルトで、または属性値を設定するだけで、フォーム Bean がセッション スコープに配置された Struts1 から、scope="session"すべてが良好でした。

Struts2 では、フォーム Bean もセッション スコープBeanもありません。また、セッション スコープBean を使用するには、それを自分で実装するか、セッション スコープが実装されてユーザーが利用できる Spring、Guice、CDI などの他のフレームワークを使用する必要があります。

一方、Struts2 は、インターセプターなどの追加機能を提供するscopeインターセプターや、いくつかのアクション プロパティをセッション スコープに配置できるscopedModelDrivenインターセプターを多用しています。オブジェクトを参照してアクションが実行されるたびにプロパティが初期化され、セッション スコープに置かれます。

このヘルパーインターセプターがなければ、実装することでいつでもセッションオブジェクトをインターセプトでき(セッションへのアクセス方法をSessionAware参照)、アクションが実行されるときにどこかでプロパティを初期化できます。アクセサーに初期化子を入れるのは悪い考えです。 prepare()

于 2013-08-14T18:33:12.900 に答える