エンタープライズ:特集 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かどうかで、何も選択されていないかの判断は行うべきではない。

前のページ | 1 2 3 4 5 | 次のページ

[大澤文孝,ITmedia]