- PR -

[struts]html:selectタグからアクションのexecuteを呼びたい

投稿者投稿内容
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 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>

SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2006-11-06 22:00
onclickではなくonchangeでは?
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2006-11-06 22:21
onchangeでフォームをサブミットすることでできました。
ありがとうございました。
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2006-11-06 22:29
onchangeでsubmitできたのですが、
ページを再読み込みしてしまい、
ほかのオブジェクトで選択した値が初期化されてしまいます。
ActionFormで値を保持してそれを再設定する必要があるのでしょうか。
mandm
常連さん
会議室デビュー日: 2005/06/04
投稿数: 30
お住まい・勤務地: ニューヨーク
投稿日時: 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に含まれる情報しかサーバーに送られないので。

  


momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2006-11-07 09:33
mandmさんありがとうございます。

複数のオブジェクトは異なるフォームタグに存在しています。
それぞれのオブジェクトが操作されたタイミングで
異なる動作をさせたかった(たとえばコンボボックスAで値を選択されたら
コンボボックスBにDBの値のリストをセットし、さらにコンボボックスBで値を選択
されたらコンボボックスCにDBの値のリストをセットするような動作)ので
複数のActionクラスを用意し、同一のActionFormクラスをRequestで保持して、
動作させています。

> 無理です。Submitでは 同じFormに含まれる情報しかサーバーに送られないので。

同一のフォームタグ内でオブジェクトごとに異なる動作をさせるためには
DispathActionフォームを利用することが必要になってくるのでしょうか。
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2006-11-07 12:38
DispatchAction,LookupDispatchActionについて調べましたが、
DispatchActionはAction属性の設定に異なるパラメータを渡さなければならない
LookupDispatchActionは複数のsubmitボタンにしか使用できない
という問題が発生しました。

同じフォーム内で複数のオブジェクト(selectなど)のイベント時に
異なる処理をさせたい、かつActionFormにパラメータを渡したい場合
はどうすればよいのでしょうか。

どなたかご教授願えないでしょうか。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-11-07 12:52
るぱんです。

ネタ的にはAJAXネタの様な気もするが・・・。

古い手法では、
子画面出して、そこでリクエストレスポンスして、
画面を閉じる際に親画面のデータを書き換えるなんて手法を取ってました。

最近の流行でどうするこうすると言うのは言えないのでごめんなさいかなぁ。

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