SHOEISHA iD

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

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

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

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

第17回

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

バリデーションとエラーメッセージ

 では、このサンプルを少し改良してみましょう。送信する項目を少し増やし、各項目に入力チェックの機能(バリデーション)を付け足してみることにします。まずはJSP側の修正です。

<%@ 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">
      <stripes:errors />
      <table>
        <tr>
          <td>Result:</td>
          <td>${actionBean.result}</td>
        </tr>
        <tr>
          <td>TEXT:</td>
          <td><stripes:text name="TEXT" /><br>
          </td>
        </tr>
        <tr>
          <td>NUMBER:</td>
          <td><stripes:text name="NUMBER" /><br>
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <stripes:submit name="submit" value="Submit" />
          </td>
        </tr>
      </table>
    </stripes:form>
  </body>
</html>
修正したフォーム。テキストと数値の入力フィールドを用意した
修正したフォーム。テキストと数値の入力フィールドを用意した

 ここでは、TEXTとNUMBERという2つの入力フィールドを用意しました。これらに、それぞれテキストと数値を入力させるようにしましょう。また簡単なバリデーションとして「TEXTは5文字以上10文字以下」「NUMBERは0~100の整数値」という入力制限をかけてみます。

 ここでは、入力フィールドやフォームなどには、そのための修正などは特に行っていません。唯一、新たに追加しているのが、<stripes:errors />というタグです。これは、バリデーションなどのエラーメッセージを出力するためのタグです。これにより、入力値が不正だった場合にはここにエラーメッセージが表示されるようになります。

ActionBeanでの入力制限

 では、ActionBeanクラスを作成しましょう。先のHeloActionBeanを次のように修正してください。

package jp.codezine;

import net.sourceforge.stripes.action.*;
import net.sourceforge.stripes.validation.*;

public class HeloActionBean implements ActionBean {
  private ActionBeanContext context;
  private String result;

  @Validate(required=true,minlength=5,maxlength=10)
  private String TEXT;

  @Validate(required=true,minvalue=0,maxvalue=100)
  private int NUMBER;
  
  public String getTEXT() {
    return TEXT;
  }

  public void setTEXT(String TEXT) {
    this.TEXT = TEXT;
  }

  public int getNUMBER() {
    return NUMBER;
  }

  public void setNUMBER(int NUMBER) {
    this.NUMBER = NUMBER;
  }

  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 = "あなたの入力した値:" + this.TEXT + ", " + this.NUMBER;
    return new ForwardResolution("/helo.jsp");
  }
}
入力が正しく行われないと、エラーメッセージが表示される
入力が正しく行われないと、エラーメッセージが表示される

 ここでは、2つの入力フィールドが用意されていますが、これらはそれぞれStringとintのタイプとして用意されています。このようにフィールドのタイプによって、対応するフォームの入力項目の値のタイプを指定できます。

 また、これらのフィールドにはバリデーションのためのアノテーションが追加されています。以下の部分です。

@Validate(required=true,minlength=5,maxlength=10)
private String TEXT;

@Validate(required=true,minvalue=0,maxvalue=100)
private int NUMBER;

 このように、フィールドの前に@Validateアノテーションを用意することで、そのフィールドにバリデーションを組み込むことができます。バリデーションの設定方法はこの他にもいろいろと用意されていますが、これがもっともシンプルで分かりやすい使い方でしょう。

 ()内には、設定するバリデーションに関する情報がまとめられています。それぞれ次のような働きをします。

  • required=真偽値
  •  必須項目とするかどうか。trueに設定すると、何も入力しない場合はエラーになる

  • minlength=整数
  •  最小文字数。指定された文字数以上でないとエラーになる

  • maxlength=整数
  •  最大文字数。指定された文字数以下でないとエラーになる

  • minvalue=数値
  •  最小値。指定された値以上でないとエラーになる

  • maxvalue=数値
  •  最大値。指定された値以下でないとエラーになる

 たったこれだけで、それぞれのフィールドにバリデーションが設定されます。値のチェックやエラーの出力など、プログラマは一切行う必要はありません。アノテーションに従ってすべてStripesがチェックし、発生したエラーは自動的に<stripes:errors />に出力されます。

次のページ
メッセージの日本語化

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング