はじめに
Stripesには、JSP内で使用するための豊富な独自タグが用意されています。これらを利用し、Stripesを経由してタグを出力させることで、さまざまな表示をStripesから制御できるようになります。
今回は、そうした独自タグの中から、フォームの主要コントロールのためのものと、レイアウト作成に関するものをまとめてとりあげることにしましょう。とりあえず、これらのものが一通り使えるようになれば、Stripesによるページ作成の基本はマスターできるでしょう。
対象読者
- Javaで手ごろなフレームワークを探している技術者。
- 最近のフレームワークをごくざっと理解しておきたい方。
- Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ。
チェックボックスとラジオボタン
今回は、Stripesの機能についてより詳しく見ていくことにしましょう。まずは、フォームのコントロール関係からです。Stripesでは、独自のタグによりフォーム関係のコントロール・タグを生成できました。これらについて、<input type="text">以外のタグの生成についても見ていきましょう。
まずは、チェックボックスとラジオボタンからです。これらは、<input type="checkbox">や<input type="radio">といったタグで生成されます。これに対応したStripesタグとしては次のようなものが用意されています。
<stripes:checkbox checked="真偽値" /> <stripes:radio checked="真偽値" />
いずれも、checkedで真偽値を指定することで、選択状態を設定できます。また<stripes:radio>の場合、nameの値を同じにすることでグループ化できます。では、実際の利用例をあげておきましょう。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Helo</title> </head> <body> <h1>Helo Stripes.</h1> <p>コントロールサンプル</p> <stripes:form beanclass="jp.codezine.HeloActionBean"> <table> <tr> <td>Result:</td> <td>${actionBean.result}</td> </tr> <tr> <td>Check:</td> <td><stripes:checkbox name="check" id="check" checked="true" /> <stripes:label for="check">checkBox</stripes:label></td> </tr> <tr> <td>Radio:</td> <td> <stripes:radio name="radio" id="r1" value="1つ目" checked="true" /> <stripes:label for="r1">Radio 1</stripes:label><br> <stripes:radio name="radio" value="2つ目" id="r2" /> <stripes:label for="r2">Radio 2</stripes:label><br> </td> </tr> <tr> <td colspan="2"> <stripes:submit name="submit" value="Submit" /> </td> </tr> </table> </stripes:form> </body> </html>
前回、作成したJSPのサンプルを修正したものです。チェックボックスとラジオボタンを用意しておきました。このサンプルでは、チェックボックスやラジオボタンの後に、<stripes:label for="コントロール名">という形でラベルを付けてあります。<stripes:checkbox>で生成されるタグは<input type="checkbox">のみで、説明のテキストなどは生成されません。そこで、<stripes:label>を使ってコントロールにラベルを設定しておくわけです。
では、このフォームを送信し、選択状態をまとめて表示させてみましょう。前回作成したActionBeanクラスを修正してみます。
package jp.codezine; import java.util.*; import net.sourceforge.stripes.action.*; public class HeloActionBean implements ActionBean { private ActionBeanContext context; private String result; private boolean check; private String radio; public String getRadio() { return radio; } public void setRadio(String radio) { this.radio = radio; } public boolean isCheck() { return check; } public void setCheck(boolean check) { this.check = check; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } @Override public ActionBeanContext getContext() { return this.context; } @Override public void setContext(ActionBeanContext context) { this.context = context; } @DefaultHandler public Resolution submit() { this.result = "あなたの入力した値:" + check + ", " + radio + ", "; return new ForwardResolution("/helo.jsp"); } }
Beanクラス側の処理です。ActionBeanでは、フォームに用意されているコントロール類を保管するためのプロパティを用意しておきますが、ここではcheckを、それぞれbooleanのプロパティとして用意してあります。これで、送信されたフォームのチェックボックスの選択状態が真偽値で取得できます。またラジオボタンは、選択された項目のvalueが得られるため、Stringプロパティとなります。