1

セッションを使用せずに Struts2 のアクション間でオブジェクトを保持できますか?

私は Struts2 プロジェクトに取り組んでおり、アクションが終了したときにオブジェクトの値を保持する方法があるかどうかに興味があります。

私がやろうとしていることは次のとおりです。

  1. アップロードされたファイルから読み取り、そのコンテンツをオブジェクトのリストとして準備するアクションを呼び出します。
  2. 次に、ユーザーの例としてリストを表示します。
  3. 次に、ユーザーは送信ボタンをクリックしてアクションを呼び出し、最初のアクションから作成されたリストを処理できます。

通常、アクションが終了するとリストは失われます。したがって、リストをセッションとして保存する必要がありますが、私が取り組んでいることを達成するためのより良い方法が必要だと思います。

4

2 に答える 2

2

リクエスト間でデータを保存したい場合、セッションはそうするための通常のメカニズムです。

セッションを使用しない場合は、基本的にその機能を複製して、現在のユーザー/会話に関連付けられたデータを維持する必要があります。

于 2013-01-12T06:07:54.720 に答える
1

リストを保持する必要がある場合、セッションを使用する必要があります。

しかし、あなたが(私があなたの問題を理解していれば)単にリストを処理する必要がある場合

ActionOne (リストを作成する) ->

JSPOne (ユーザーにリストを表示する) ->

ACtionTwo (JSPOne から List を受け取り、それを処理する)

、ユーザーがリストのクライアント側を変更できるという事実を心配する必要がない場合 (たとえば、FireBug を使用して Web ページを操作する場合)、セッションは必要ありません。

List オブジェクトを ActionOne と ActionTwo で宣言し (getter と setter、少なくとも ActionOne では getter を、少なくとも ActionTwo では setter を使用)、nameJSP タグの属性に List 名とインデックスを含めるだけで済みます。(タグのように)それを描画するだけの場合は、 のように<s:property/>値を投稿するタグを使用する代わりに、 を使用して値を投稿します。<s:textfield /><s:hidden />

たとえば、次の場合:

List<MyObject> myList //with getters and setters

idMyObject にandvalueフィールド (getter と setter を使用)があると仮定すると、

の代わりに JSP で

<s:iterator value="myList" >
   <s:property value="id"/>
   <s:textfield name="value"/>
</s:iterator>

使用する

<s:iterator value="myList" status="ctr" >
   <s:hidden name="myList[#ctr.index].id" value="id"/>
   <s:property value="id"/> <!-- no need here, you won't post this -->
   <s:textfield name="myList[#ctr.index].value" value="value" />
</s:iterator>

最終的には、このようなリストをVisitor Validatorを介して検証します(残りのすべてが完了した後、どこかで :)

楽しみ

于 2013-01-12T15:23:18.607 に答える