フォームにおけるチェックボックスの利用形態には大きく分けて2つあります。
チェックされている場合にはstrVerify にVALUE属性で指定された値が入りますが、実際にはこの値にはあまり意味はありません(nullでないことが分かれば十分なので)。IEやFirefoxでは、チェックボックスのVALUE属性を省略されている場合に "on" という文字列がVALUEとして送信されるようです。
ただ、HTML4.01の仕様書には、次のように書かれているので、タテマエ上は省略してはいけないのかも知れません。
参考:
http://validator.w3.org/#validate_by_input
複数の選択肢から複数の項目を選ぶ場合
フォームでは次のようにname属性が同じで、value属性の異なるチェックボックスを複数用意します。<FORM ACTION="test1.jsp" METHOD="post">
<INPUT TYPE="checkbox" NAME="item" VALUE="Bleatles">ビートルズ
<INPUT TYPE="checkbox" NAME="item" VALUE="Rutles">ラトルズ
<INPUT TYPE="checkbox" NAME="item" VALUE="Ramones">ラモーンズ
<INPUT TYPE="submit" VALUE="送信">
</FORM>
受信側のJSPは次のようになります。<INPUT TYPE="checkbox" NAME="item" VALUE="Bleatles">ビートルズ
<INPUT TYPE="checkbox" NAME="item" VALUE="Rutles">ラトルズ
<INPUT TYPE="checkbox" NAME="item" VALUE="Ramones">ラモーンズ
<INPUT TYPE="submit" VALUE="送信">
</FORM>
String[] aryItem = request.getParameterValues("item");
上のコードで、チェックされた項目が配列aryItemに入ります。一つもチェックされていない場合はaryItemはnullになるので、配列の要素にアクセスする前に、nullかどうかを調べる必要があります。チェックの有無を調べる
次のようにフォーム上にチェックボックスを1つだけ用意し、JSP側ではチェックボックスがチェックされたかどうかだけを調べるというものです。<FORM ACTION="test1.jsp" METHOD="post">
<INPUT TYPE="checkbox" NAME="verify" VALUE="OK">よろしいですか?
<INPUT TYPE="submit" VALUE="送信">
</FORM>
受信側のJSPは次のようになります。<INPUT TYPE="checkbox" NAME="verify" VALUE="OK">よろしいですか?
<INPUT TYPE="submit" VALUE="送信">
</FORM>
String strVerify = request.getParameterValues("verify");
上のコードの strVerify が null かどうかを調べることによって、チェックされているかどうかを調べることができます。チェックされている場合にはstrVerify にVALUE属性で指定された値が入りますが、実際にはこの値にはあまり意味はありません(nullでないことが分かれば十分なので)。IEやFirefoxでは、チェックボックスのVALUE属性を省略されている場合に "on" という文字列がVALUEとして送信されるようです。
ただ、HTML4.01の仕様書には、次のように書かれているので、タテマエ上は省略してはいけないのかも知れません。
It is optional except when the type attribute has the value "radio" or "checkbox".
w3cのバリデータでチェックした限りでは、VALUE属性が無くてもエラーにはなりませんでしたが。 参考:
http://validator.w3.org/#validate_by_input
投稿:竹形 誠司[takegata]/2008年 02月 13日 20時 09分
/更新:2008年 02月 13日 20時 23分