- ベストアンサー
JSPから値を送ったときのServletでの受け取り方について
JSPから<form>で値を送って、それをServletでgetParameterで受け取る処理を しているのですが、 JSPから送る値がいくつあるかわからない場合、Servlet側ではどのように 受け取る方法があるでしょうか? 例えば、 <form action="<%= response.encodeURL("/mimi/abc") %>" method="post"> <% for(int i=0;i<attr.size();i++) { //attr.size()にはいくつ入ってるか不明として String strNameAtr = (String)attr.elementAt(i) ; %> 値 <input type="text" value="<%= strNameAtr %>" name="xmlValueAttr_"+"<%= i %>"><br> <% } %> <input type="submit" value="変更" name="getText"> </form> これを、Servletで受け取る場合、どのように受け取れるでしょうか? xmlValueAttr_iの"i"の部分はいくつまで入っているかわからないので、 普通の処理だと、対応できません。 いい方法があったら、教えてください、お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
formから変数 i を type="hidden"で渡すとかでも いいような気もしますが・・・・邪道っぽいので、 個数に関係なく全部受取る方法になりますが Hashtable ht = new Hashtable(); Enumeration enum = request.getParameterNames(); while (enum.hasMoreElements()){ key = (string)enum.nextElement(); value = request.getParameter(key); ht.put(key, value); } こんな感じですか・・・ あとは get()で出していけば良いかと。
その他の回答 (1)
- pentaro_2000
- ベストアンサー率23% (29/123)
試していないのでできるかどうか自信が無いですが、 フォームの方を <input type="text" value="<%= strNameAtr %>" name="xmlValueAttr"><br> のようにして、名前をすべて同じにします。 そうすると受け取るServletで、 String str[] = requesut.getParameterValues("xmlValueAttr") にして受け取ると全部取れるのではないかと。
お礼
request.getParameterValuesなんて便利なものがあったんですね! さっそく試してみましたが、私の受け取り方がうまくできなくて、まだ 完成していませんが。。 回答ありがとうございました。
お礼
回答ありがとうございました! Hashtableでformの受け取りが出来るなんて、思いつきませんでした。 Hashtableはあまり使ったことがなかったので、この機会に使い方を 習得します★ ありがとうございました。