- - PR -
[struts]html:selectタグからアクションのexecuteを呼びたい
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-11-06 20:13
strutsを用いて開発しています。
現在あるページ上に複数のオブジェクトがあります。 そのひとつであるhtml:selectタグでアイテムが選択された際に html:formタグで指定したactionのexecuteメソッドを呼びたいのですが うまくいきません。 html:selectのonclickでjavascriptからsubmitをコールしても、 ActionFormのプロパティに値が入ってこないです。 うまく呼ぶ方法はないでしょうか。 <html:form action="/pages/aaa/bbb"> <html:select property="selectDivision" multiple="true"> <html:option value="A">全×××</html:option> <html:option value="0001">××部</html:option> </html:select> </html:form> |
|
投稿日時: 2006-11-06 22:00
onclickではなくonchangeでは?
|
|
投稿日時: 2006-11-06 22:21
onchangeでフォームをサブミットすることでできました。
ありがとうございました。 |
|
投稿日時: 2006-11-06 22:29
onchangeでsubmitできたのですが、
ページを再読み込みしてしまい、 ほかのオブジェクトで選択した値が初期化されてしまいます。 ActionFormで値を保持してそれを再設定する必要があるのでしょうか。 |
|
投稿日時: 2006-11-07 02:43
”ほかのオブジェクト”の値は、selectDivision と同じ ActionFormに セットしているのでしょうか?すなわち、
<html:form action="/pages/aaa/bbb"> <html:select property="selectDivision" multiple="true"> <html:option value="A">全×××</html:option> <html:option value="0001">××部</html:option> </html:select> <html:text property="hokanoProperty" /> ←こんなふうに同じForm内? </html:form> 1.同じFormタグの中に”べつのオブジェクト”がある場合、 struts-config.xmlでFormのスコープを 変えてみる request→session (*ラジオボタンの場合等は、ActionFOrmのresetメソッドでごにょごにょする必要あり) 2.別のFormタグの中に”べつのオブジェクト”がある場合、 無理です。Submitでは 同じFormに含まれる情報しかサーバーに送られないので。 |
|
投稿日時: 2006-11-07 09:33
mandmさんありがとうございます。
複数のオブジェクトは異なるフォームタグに存在しています。 それぞれのオブジェクトが操作されたタイミングで 異なる動作をさせたかった(たとえばコンボボックスAで値を選択されたら コンボボックスBにDBの値のリストをセットし、さらにコンボボックスBで値を選択 されたらコンボボックスCにDBの値のリストをセットするような動作)ので 複数のActionクラスを用意し、同一のActionFormクラスをRequestで保持して、 動作させています。 > 無理です。Submitでは 同じFormに含まれる情報しかサーバーに送られないので。 同一のフォームタグ内でオブジェクトごとに異なる動作をさせるためには DispathActionフォームを利用することが必要になってくるのでしょうか。 |
|
投稿日時: 2006-11-07 12:38
DispatchAction,LookupDispatchActionについて調べましたが、
DispatchActionはAction属性の設定に異なるパラメータを渡さなければならない LookupDispatchActionは複数のsubmitボタンにしか使用できない という問題が発生しました。 同じフォーム内で複数のオブジェクト(selectなど)のイベント時に 異なる処理をさせたい、かつActionFormにパラメータを渡したい場合 はどうすればよいのでしょうか。 どなたかご教授願えないでしょうか。 |
|
投稿日時: 2006-11-07 12:52
るぱんです。
ネタ的にはAJAXネタの様な気もするが・・・。 古い手法では、 子画面出して、そこでリクエストレスポンスして、 画面を閉じる際に親画面のデータを書き換えるなんて手法を取ってました。 最近の流行でどうするこうすると言うのは言えないのでごめんなさいかなぁ。 |