| エンタープライズ:特集 | 2003/06/24 00:00:00 更新 |
JSPプログラミング入門
第3回:HTMLエンコードが必要なJSPプログラミングの基本 (3/5)
ラジオボタン
ラジオボタンである「<INPUT type="radio">」の処理は、チェックボックスと同じである。「getParameter」メソッドでは、選択されているラジオボタンの「value」アトリビュートの値が得られる。例えば、次のような3つのラジオボタンがあるとしよう。
|
<INPUT type="radio" name="rdobutton" value="value1">ラジオ1 <INPUT type="radio" name="rdobutton" value="value2">ラジオ2 <INPUT type="radio" name="rdobutton" value="value3">ラジオ3 |
この場合には、ラジオ2が選択されていたとすると「getParameter("rdobutton")」の値は、「value2」となる。例えば、リスト7のようにしてチェックができるのだ。
リスト7■ラジオボタンの状態を調べる例
1: <%
2: String value = request.getParameter("rdobutton");
3: if (value == null)
4: {
5: out.println("どれも選択されていません<BR>");
6: }
7: else if (value.compareTo("value1") == 0)
8: {
9: out.println("チェック1がチェックされています<BR>");
10: }
11: else if (value.compareTo("value2") == 0)
12: {
13: out.println("チェック2がチェックされています<BR>");
14: }
15: else if (value.compareTo("value3") == 0)
16: {
17: out.println("チェック3がチェックされています<BR>");
18: }
19: else
20: {
21: out.println("不正な値が選択されています<BR>");
22: }
23: %>
|
リスト7では、if文で、どのラジオボタンが選択されているかを調べているが、3〜6行目では、まず、「getParameter」メソッドの戻り値がnullであるかどうかを判断している点に注意したい。
2: String value = request.getParameter("rdobutton");
3: if (value == null)
4: {
5: out.println("どれも選択されていません<BR>");
6: }
|
この処理では、値がnullである際、後続の処理で「compareTo」メソッドを使うと例外が発生するためである(compareTo」メソッドはStringオブジェクトのメソッドであり、nullはStringオブジェクトではないため)。
ラジオボタンにおいてユーザーが何も選択していない場合、「getParameter("フィールド名")」の値がどのような値になるのかは、Webブラウザに依存する。w3cのHTML仕様書によれば、何も選択されていない場合、1番目の項目が標準選択されるのが正しいWebブラウザの振る舞いである。よって、この仕様に沿ったWebブラウザであれば、何も選択されていないという動作は起こらず(ラジオボタンがひとつも存在しない場合を除き)、「getParameter("フィールド")」の値がnullになることはないのだ。
しかし、現状多くのWebブラウザは、何も選択されていない場合にはWebサーバに対してラジオボタンに関する情報を何も送信してこない。このため、「getParameter("フィールド名")」が、nullとなるものが多い。これは、ラジオボタンで、ユーザーに「何も選択しない」という選択肢を与えることを必要とする既存のWebアプリケーションが多いためだと思われる。
| One Point: |
| w3cのHTML仕様書によると、ラジオボタンは、ユーザーは「必ず何かを選択しなければならない」というユーザーインタフェースを取るものと規定されている。よって、これからWebアプリケーションを作るのであれば、何も選択しないという選択をユーザーに要求させる場合、何も選択しないという選択肢――すなわち、「<INPUT type="radio" name="フィールド名" value="値">選択しない」といった項目――を用意すべきであり、「getParameter("フィールド名")」値がnullかどうかで、何も選択されていないかの判断は行うべきではない。 |
[大澤文孝,ITmedia]
