SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

第18回

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

 小さなライブラリ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プロパティとなります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
選択リスト

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5250 2010/07/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング