- PR -

画面間のFORMの内容について

1
投稿者投稿内容
そら
会議室デビュー日: 2007/11/02
投稿数: 3
投稿日時: 2007-11-02 18:31
A画面とB画面のそれぞれのFORM(FORMAとFORMB)に同じ項目名のフィールド(プロパティをitem1とします)があり、A画面から実行されたActionを実行後、B画面編集用のActionにforwardしたあとB画面に遷移するようになっています。

このとき、A画面から呼ばれた最初のActionではitem1(FORMA)の値を利用しますが、B画面編集用のActionではitem1(FORMB)の値は不要でB画面表示時にはitem1(FORMB)の値は空にしたいのですが、現状ではA画面で入力されたitem1(FORMA)の内容がB画面のitem1(FORMB)の初期値として表示されてしまいます。

B画面を表示する際に、item1(FORMB)に値が入らない様にするには、B画面編集用のActionにてFORMBの内容を明示的にクリアする以外方法はないのでしょうか?
ダメもとで、resetメソッドでクリアとか試してみましたが、やはりダメでした。
そら
会議室デビュー日: 2007/11/02
投稿数: 3
投稿日時: 2007-11-02 18:43
すみません。言葉足らずです。

Struts1.2とTomcat5.0で実行しています。
JDKは1.4.2_13です。

他にも情報が不足している様なら指摘をお願いします。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-02 19:14
コードが全然見れないので、口から出まかせを言ってみると:
forwardを使うのをやめてsendRedirectを使うか、
同じパラメータ名を使うのをやめるか…
そら
会議室デビュー日: 2007/11/02
投稿数: 3
投稿日時: 2007-11-02 19:56
回答ありがとうございます。
早速sendRedirectを調べてみます。

コードは以下の様になっています。
-- ActionAのexecuteメソッド --
 public ActionForward execute(・・・ {
  FormA formA = (FormA)form;
  String item1 = formA.getItem1();
   :
  // ActionAの処理
   :
  return mapping.findForward("success");
 }

-- ActionBのexecuteメソッド --
 public ActionForward execute(・・・ {
  FormB formB = (FormB)form;
  String item1 = formB.getItem1(); // この時点で画面Aで入力した値がformBに入っている
   :
  // ActionBの処理
   :
  return mapping.findForward("success");
 }

-- struts-config.xml --
 <form-bean name="FormA" type="xx.xx.FormA">
 <form-bean name="FormB" type="xx.xx.FormB">
   :
 <action path="/ActionA" type="xx.xx.ActionA" name="FormA" ・・・>
  <forward name="success" path="/ActionB.do" />
 </action>
 <action path="/ActionB" type="xx.xx.ActionB" name="FormB" ・・・>
  <forward name="success" path="/gamenB.jsp" />
 </action>
1

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