- - PR -
Struts Submitボタンでパラメータを送信する
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-03 20:23
StrutsでSubmitボタンが押されたときに、
パラメータを送信したいのですが、 どうしてもStrutsタグだけで上手く書くことができません。 やりたいことを具体的に書くと、以下のような感じです。 ※コードは簡略化してます。
上記のようなフォームで以下を送信します。 @hiddenのトークン値 (何が押されても同じものを送信) AA,B,Cどれが押されたか Bparam[i] (A,B,Cどれが押されても、i番目のparamを送信) 現在はボタンからJavaScriptを実行して、 そこで、hiddenフィールドにA,B,Cどれが押されたかと、param[i]を格納して、 送信を実行しています。 できればJavaScriptを使わずStrutsタグだけでやりたく、 かつ、A,B,CボタンはEventDispatchActionを使ってメソッドを振り分けたいのですが、 何か上手い方法はありませんでしょうか? JavaScriptを使わず、奇麗なコードになるなら全く別の方法でも構いません。 よろしくお願いします。 | ||||||||
|
投稿日時: 2007-11-04 18:08
一覧形式かなにかかとおもいますが、
<logic:iterator collection="<%= collection %>" id="s"> <html:form action="/HogeAction.do"> <html:submit property="submit" value="A"/> <html:submit property="submit" value="B"/> <html:submit property="submit" value="C"/> </html:form> </logic:iterator> とすれば DispatchAction を実行できる形に変化される。 (結果) <html> <body> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> <form> <input type="submit" name="submit" value="A"/> <input type="submit" name="submit" value="B"/> <input type="submit" name="submit" value="C"/> </form> </body> </html> | ||||||||
|
投稿日時: 2007-11-05 00:37
レスありがとうございます。
iteratorタグの使い方は知ってます。 見やすいかと思って、ソースではfor文を使ったんですが、 逆に質問の意図が分かりづらくなってしまったかもしれません。 お聞きしたいのは、ループやDispatchのやり方ではなく、 Submitボタンでパラメータを送信する方法です。 ループによりpropertyもvalueも同じAボタンが、 複数できてしまうわけですが、 それらが各自異なるパラメータを送信したいのです。 今のままのやり方ではJavaScriptを使わないと、 どうしようもないような気もするんですが。 | ||||||||
|
投稿日時: 2007-11-05 02:19
iteratorタグのindexId属性を使うんじゃないですかね。
| ||||||||
|
投稿日時: 2007-11-05 07:44
うにゃ、サンプルだしたのみてわかるように
1行==1フォーム javascriptを使用しない場合はこうなる。 DispatchAction系とくみあわせることで 1行ごとデータを送信でき、処理も分けることができる。ということ。 | ||||||||
|
投稿日時: 2007-11-05 10:32
「うにゃ」は否定でしょうか肯定でしょうか(笑)
itrateのidを使ってやるとすれば、こんな感じですか? (indexIdを使ってももちろんいいですが)
こうすれば確かにA,B,CボタンをDispatchできて、 i番目のパラメータも送れます。 このForm自体を回す方法は私も考えたんですが、 最初の投稿に書いたようにトークン値を送りたいので、 それをループ毎に何度も書いてしまうことになるのです。 | ||||||||
|
投稿日時: 2007-11-05 11:47
複数formで同じ値を送るなら全formに書くのは避けられないですし。 逆にformをひとつにすると、そのままだとparamが全部送られちゃうから 結局javascriptになっちゃいそうですし。 | ||||||||
|
投稿日時: 2007-11-06 11:25
>javascript使うよりは、これでいいんじゃないですかね。
色々と書いているうちに、 確かにこれが割と分かりやすくていい気がしてきました。 Strutsタグの限界というのもあるかもしれません。 みなさん、ありがとうございました。 |
1