- PR -

JSP(HTML)のチェックボックスでチェックされた値をServletに送ります。

1
投稿者投稿内容
ゆう
常連さん
会議室デビュー日: 2001/12/10
投稿数: 33
投稿日時: 2002-09-20 01:47
こんにちは、境と申します。

JSP(HTML)のチェックボックスでチェックされた値をServletに送ります。
以下のようにするとrequest.getParameterValues("people")とするとチェックされている項目のVALUEがString配列で取ますが、
ひとつのチェックで2つ以上の値を渡す場合、
たとえば、"taro","man"の2つを取得したい場合は以下のように区切り文字をつけて渡し、
Servlet側で分割する方法しかないのでしょうか?

<INPUT TYPE="checkbox" NAME="people" VALUE="taro&man">
<INPUT TYPE="checkbox" NAME="people" VALUE="hanako&womman">
<INPUT TYPE="checkbox" NAME="people" VALUE="sakura&woman">
<INPUT TYPE="checkbox" NAME="people" VALUE="yuki&man">

JAVASCRIPT等を使用してチェックされたらオブジェクトの属性に別々に入って、
それが配列になって飛んでくるような方法はないでしょうか
また、一般的にこのような処理が必要な場合にどのようにして実現しているかを
教えてください。

よろしくおねがいします。
gsg
常連さん
会議室デビュー日: 2002/08/09
投稿数: 20
お住まい・勤務地: 東京都
投稿日時: 2002-09-20 09:28
http://java.sun.com/products/servlet/2.2/javadoc/javax/servlet/ServletRequest.html#getParameterValues(java.lang.String)

ということで、ServletRequest#getParameterValues(String)を利用すれば、
文字列の配列として、複数の情報を取得できるみたいです。(ごめんなさい、
実際には試していません。)
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2002-09-20 10:00
引用:

JAVASCRIPT等を使用してチェックされたらオブジェクトの属性に別々に入って、
それが配列になって飛んでくるような方法はないでしょうか
また、一般的にこのような処理が必要な場合にどのようにして実現しているかを
教えてください。



永井です。

XHTML1.1で同じnameのhidden要素を必要なだけ定義しておいて
各要素にはそれぞれ固有のidを振ります。
JavaScriptを使って、OnClickイベントを起点にして
idで判別して必要なフラグをOn、Offすることによって実現出来る
気がします。
#フラグのOn、Offというよりは対象文字列と空文字列の代入ですが

これで普通にsubmitすれば、いけると思いますが
XHTML1.0以前のDTDに適合しているかは分かりません。
苦しいとは思うのですが。
#というより、XHTML1.1でも本当にアリなのか確認取ってないです。
#申し訳ありません。

------------------------

もうちょっと一般的な方法ですと、
チェックボックスの内容をOnSubmitをトリガに全てチェックして、
必要な文字列を適当なhidden属性の値などに(独自の)区切り文字を挟みながら
生成する
方法があると思います。
こちらなら一般的なHTMLの書式に適合すると思います。
この方法の場合はセパレートを受け側でやる必要がありますが。

--------------------------

調査の手がかりにでもなれば幸いです
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2002-09-20 11:03
永井です。自己補足。

引用:

XHTML1.0以前のDTDに適合しているかは分かりません。
苦しいとは思うのですが。
#というより、XHTML1.1でも本当にアリなのか確認取ってないです。
#申し訳ありません。



急にXHTML1.1を出したのは、idとnameの完全な分化を期待したからです。
http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_forms
この辺りを見て、大丈夫そうかなーと思ったんですが、確証は無いです。

引用:

もうちょっと一般的な方法ですと、



こちらの方は境さんが書かれていた方法そのままですね。
申し訳ないです。

個人的には受け側のプログラムに
「あるnameのvalueを全て受け取って、指定したデリミタでさらに分割して
(重複を排除しながら)配列に格納する」
ような関数-request.getParameterValues(String str)にラップ被せたもの-でも作って、
最初に境さんか書かれていたような感じでベタに送信するのがいいかなと思います。
#無理してHTML&JavaScriptに押し付けるよりは


[ メッセージ編集済み 編集者: 永井和彦 編集日時 2002-09-20 12:54 ]
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2002-09-20 11:23
引用:

永井です。自己補足。



すみません。自己補足の嵐です(TT

引用:

急にXHTML1.1を出したのは、idとnameの完全な分化を期待したからです。
http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_forms
この辺りを見て、大丈夫そうかなーと思ったんですが、確証は無いです。



ちょっと眺めてみた感じ、HTML4.01Strictでも明確にnameはnameでCDATAですね。

http://www.w3.org/TR/html401/struct/links.html#anchors-with-id
アンカーとidの問題辺りと混同していたようです。
意味不明の書き込みを連続でやってしまい、申し訳ないです。
#いいきっかけを与えていただいたおかげで、勉強になりました(^^

……と、JavaScriptとidとnameの関係はどうだっただろう←また宿題が(TT
1

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