Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Javaで軽快に使える「軽量フレームワーク」特集
~小さなライブラリ1つで動くStripes Framework(2)

第18回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/07/09 14:00

 小さなライブラリ1つで動くJavaの軽量フレームワーク「Stripes Framework」の2回目。今回は、フォームとレイアウト関係の機能について説明していきましょう。

目次

はじめに

 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プロパティとなります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 掌田 津耶乃(ショウダ ツヤノ)

    三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆活動をする傍ら、ログハウスの普及活動にいそしんでいる。(掌田津耶乃のWebサイトはこちら) ※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開中。またGoogle+プロフ...

バックナンバー

連載:Javaで軽快に使える「軽量フレームワーク」特集

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5