- PR -

Struts DynaActionFormについて

1
投稿者投稿内容
バナジウム
会議室デビュー日: 2008/04/23
投稿数: 1
投稿日時: 2008-04-23 16:28
ただ今Strutsを使い、プログラムを組んでいます。
ActionFormを作る代わりに、DynaActionFormを使いプロパティーの値を取得しています。

そこで質問なのですが、一つのActionクラスで多数のDynaActionFormを扱えるのでしょうか?
例えば
struts-configで

<form-beans>

 <form-bean name="aForm"                            type="org.apache.struts.action.DynaActionForm" >
 <form-property name="a" type="java.lang.String"/>
 <form-property name="b" type="java.lang.String"/>
 <form-property name="c" type="java.lang.String"/>
 <form-property name="d" type="java.lang.String"/>
 </form-bean>


 <form-bean name="bForm"                            type="org.apache.struts.action.DynaActionForm" >
 <form-property name="e" type="java.lang.String"/>
 <form-property name="f" type="java.lang.String"/>
 <form-property name="g" type="java.lang.String"/>
 <form-property name="h" type="java.lang.String"/>
 </form-bean>

</form-beans>

<action-mappings>

<action
  name="aForm"
  path="/aPath"
  scope="request"
  type="action.aAction">
  <forward name="success" path="/aMain.jsp" />
</action>

<action
  name="bForm"
  path="/bPath"
  scope="request"
  type="action.bAction">
  <forward name="success" path="/bMain.jsp" />
</action>

</action-mappings>

というような場合、bActionクラスでaFormを使い、aの値を取れたりするのでしょうか?
色々調べてみたけれどよく分かりませんでした。
もし、方法があるのなら是非ご教授ください。

説明が下手で伝わりにくいとろこも多々あるかと思いますが、よろしくお願いします。

Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2008-04-25 15:41
aAction を実行後、aMain.jsp により aForm のフィールドに値がバインドされていて、その後に bAction が実行されるのであれば、aForm のオブジェクトはリクエスト変数かセッション変数に格納されています。

セッション変数に格納しておく方法を使えば、bAction#execute() メソッドの HttpServletRequest 型引数(ここでは req)に対して、以下のコード
コード:

HttpSession s = req.getSession();
aForm a = (aForm) s.getAttribute("aForm");


のような方法で aForm オブジェクトが取得できると思います。
ただし、例示された struts-config.xml の aForm action 定義で scope 属性の値を "session" にしておく必要があります。
request スコープのままで取得する方法はわかりません。
(リクエスト完了時にリクエストスコープ内の情報は失われるので不可能と考えますが、確証はありません。)
bAction 以降で aForm オブジェクトをセッション変数に残しておくのが好ましくなければ、明示的に s.removeAttribute("aForm") を実行してセッション変数から削除する必要があります。

[ メッセージ編集済み 編集者: Gio 編集日時 2008-04-25 15:42 ]
1

スキルアップ/キャリアアップ(JOB@IT)