エンタープライズ:特集 2003/06/24 00:00:00 更新

JSPプログラミング入門
第3回:HTMLエンコードが必要なJSPプログラミングの基本 (2/5)

入力フォームごとの対処方法

 以上で、「<INPUT type="TEXT">」タグにおけるテキスト入力フィールドの処理方法が理解いただけたと思う。しかし、入力フォームにはテキスト入力フィールドだけでなく、チェックボックスやラジオボタン、選択フィールドなども設置できる。どの入力フィールドも、処理の流れは同じだが、以下には簡単にテキスト入力フィールド以外の、入力フィールドに関する固有処理について補足しておこう。

  • パスワードフィールド

 パスワードフィールドである「<INPUT type="PASSWORD">」の処理は、テキスト入力フィールドとまったく同じである。

  • 複数行テキスト入力フィールド

 一方、複数行テキスト入力フィールドの「<TEXTAREA>」処理は、テキスト入力フィールドと同じである。

One Point:
細かい点だが、複数行テキスト入力フィールドではユーザーが改行を入力できるため、リスト4のように「<%= %>」を使い、入力された内容をそのままクライアントに返す場合には、改行をHTMLにおけるコード「<BR>」に置換しなければ画面上で改行表現されない。

チェックボックス

 チェックボックスである「<INPUT type="checkbox">」の場合、「getParameter」メソッドではチェックが付けられた「value」アトリビュート値が得られる。チェックが付いていないチェックボックスでは、「getParameter」メソッドの戻り値がnullとなる。例えば、次のような3つのチェックボックスがあるとしよう。

<INPUT type="checkbox" name="chkbutton1" value="on">チェック1
<INPUT type="checkbox" name="chkbutton2" value="on">チェック2
<INPUT type="checkbox" name="chkbutton3" value="on">チェック3

 この際、チェック1とチェック2にチェックが付けられており、チェック3にはチェックが付けられていないとしよう。「getParameter("checkbutton1")」と「getParameter("checkbutton2")」の値は、共に「on」となる。「getParameter("checkbutton3")」の値は、nullだ。これにより、例えばリスト6のように指定をすると、どのチェックボックスにチェックが付いているかを調べることができるのだ。

One Point:
リスト6では、if文の条件判断で、「request.getParameter("フィールド名")!= null」とし、nullではないことを調べている。しかし、「value」プロパティが特定の値であるかどうかを調べるためには、例えば「request.getParameter("フィールド名").compareTo("on") == 0」のように判定してもよい。

リスト6■チェックボックスの状態を調べる例
  1: <%
  2:   if (request.getParameter("chkbutton1") != null)
  3:   {
  4:     out.println("チェック1がチェックされています
"); 5: } 6: if (request.getParameter("chkbutton") != null) 7: { 8: out.println("チェック2がチェックされています
"); 9: } 10: if (request.getParameter("chkbutton3") != null) 11: { 12: out.println("チェック3がチェックされています
"); 13: } 14: %>

One Point:
チェックボックスでは、複数のチェックボックスに同じ名前(nameアトリビュート)の値を設定することもできる。例えば、次のようなチェックボックスを考えてみよう。

<INPUT type="checkbox" name="chkbutton" value="value1">チェック1
<INPUT type="checkbox" name="chkbutton" value="value2">チェック2
<INPUT type="checkbox" name="chkbutton" value="value3">チェック3

 この際、チェック1とチェック2にチェックが付けられており、チェック3にはチェックが付けられていないとする。「getParameter("chkbutton")」の値は、チェックが付けられた先頭項目「value」アトリビュートの値「value1」が格納され、「value2」の値は格納されない。チェック2がチェックされたことを判断できないのだ。

 そこでこのような場合には、後述する選択フィールド処理のように、「getParameterValues」メソッドを使えばよい。「getParameterValues」メソッドを使うと、チェックが付けられた項目がすべて配列として得られ、「getParameterValue("checkbutton")[0]」の値は「value1」、「getParameterValue("checkbutton")[1]」の値は「value2」のように得られる。

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

[大澤文孝,ITmedia]