• ベストアンサー

hiddenの値が期待した値で取得されないのです

いつもお世話になっております。 for文の中で、押されたボタンのデータをhiddenで送信しようとしているのですが、 うまくいきません。 ソースは下記になります。 aaa.jsp <% for(int i = 0;i < list.size(); i++) { caModel = (CategoryModel)list.get(i); int i1 = caModel.getCategory(); int i2 = caModel.getCategory_sub(); String s1 = caModel.getCategory_name(); %> <html:submit property="submit"><%=s1%></html:submit> <%=i1%>,<%=i2%> <input type="hidden" name="category" value="<%=i1%>"> <input type="hidden" name="category_sub" value="<%=i2%>"> <% } %> 途中でi1とi2を表示しているのですが、期待している通りに表示されます。[1,1]と[1,2]が表示。 これをservletで取得すると、 bbb.java String st1 = request.getParameter("category"); String st2 = request.getParameter("category_sub"); System.out.println("st1 = " + st1); System.out.println("st2 = " + st2); 2つ目のボタンを押して[1,2]を送信したいのですが[1,1]が表示されてしまいます。 分かる方がいましたら、ご教授下さい。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#19197
noname#19197
回答No.1

ループ内にformを記述してみてはどうですか。

その他の回答 (2)

noname#45950
noname#45950
回答No.3

質問を拝見して、 ・HTMLのsubmitについて、理解出来ているのかな? ・ブラウザで表示されたHTMLのソース、見てないんだろうな? と、思ってしまうのですが、いかがでしょうか? formをデータの個数分作って、そこにhiddenでデータを埋め込むというのは、動くとは思うのですが、もしも客先提出するものだったら、ちょっと・・・と感じます(私的には、ですが)。なにせ、ブラウザ右クリックで「ソースの表示」したら、まるわかりですから。 私だったら、DBのプライマリーキー的な物をURLパラメタに 持たせて、サーバーで突合せをします。 また、どうしてもクライアント側で処理したい時は、jspでデータをJavaScriptの多次元配列に展開し、ボタンのsubmitではない)onClickイベントで、取得・表示させたこともあります。

  • process9
  • ベストアンサー率29% (81/271)
回答No.2

書かれた部分のソースだけの判断なら、 hidden項目の名前が各行(複数行ですよね?)全て name="category" と name="category_sub" になっているのが原因です。 同一名だとどのデータを送っていいのか、IE側に分からないので (なのでHTMLでは、思ったとおりに各値が設定されているはず。 送信時点で) 最初の奴を送っているように見えます。 というか、データは複数行で、取得側が1行分のみって・・・ 人間でもどのデータを取得したいか分からないはずです。 (それとも、1,2だよって何か処理があるのでしょうか・・・) 回避方法は、  1.hidenフィールドの名前を全て別の名前にする。    name="category1"  name="category_sub1"    name="category2"  name="category_sub2"    name="category3"  name="category_sub3"  で受け取り側でどれを受け取りたいか名前を指定する。  2.javaScript にて 送信データを選別して送信する。  3.#1の言われている通りFormを分けてjavaScriptによる    送信(Submit)制御を行う。 でしょうか。

関連するQ&A