SHOEISHA iD

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集
低い学習コストを重視した「Apache Click」 (2)

第5回


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

 前回、Ahache Clickの基本的な使い方について説明しました。今回は、Webアプリケーションを作成する上で知っておきたいさまざまな機能について、いくつかピックアップして紹介していくことにしましょう。

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

はじめに

 前回、Ahache Clickの基本的な使い方について説明しました。今回は、Webアプリケーションを作成する上で知っておきたいさまざまな機能について、いくつかピックアップして紹介していくことにしましょう。

 Webアプリケーションを作成するとき、何よりもまず必要となってくるのは「入力された値のチェック(バリデーション)」「ページ遷移」「エラー処理」といったものでしょう。それらについて順に説明していきます。

対象読者

  • Javaで手ごろなフレームワークを探している技術者。
  • 最近のフレームワークをごくざっと理解しておきたい方。
  • Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ。

バリデート機能付フィールドを使う

 まずは、値のチェックからです。多くのWebアプリケーション関係のフレームワークでは「バリデーション」と呼ばれる値のチェック機能を備えています。Apache Clickの場合、各種の値を入力するためのコントロールが用意されており、それらを組み込むことで処理を行うようになっています。一例として、「整数を入力するためのフィールド」を使った簡単なサンプルをあげましょう。

package jp.codezine.click;

import org.apache.click.Page;
import org.apache.click.control.*;
import org.apache.click.extras.control.*;

public class HeloPage extends Page {
    public String msg = "整数を入力ください。";
    public Form form;
    private IntegerField field;
    private Submit submit;

    public HeloPage(){
        form = new Form("form");
        field = new IntegerField("input","入力:");
        field.setRequired(true);
        field.setMinValue(0);
        field.setMaxValue(100);
        form.add(field);
        submit = new Submit("submit", "送信");
        form.add(submit);
    }
    
    @Override
    public void onPost(){
        if(form.isValid()){
            int n = field.getInteger();
            int total = 0;
            for(int i = 0;i <= n;i++)
                total += i;
            msg = "合計:" + total;
        }
    }
}
図1 0~100の整数以外の値を入力するとエラーメッセージが表示され、計算がされない。
図1 0~100の整数以外の値を入力するとエラーメッセージが表示され、計算がされない。

 テンプレート側には、メッセージを表示する$msgと、フォームを表示する$formを埋め込んでおきます。このサンプルは、0~100までの整数を入力して送信すると、ゼロからその数までの総和を計算して表示するサンプルです。それ以外の値を入力して送信してみてください。エラーメッセージが表示され、その他の表示も初期状態に戻されます。

IntegerField利用とバリデーションの処理

 では処理を見てみましょう。IntegerFieldは、org.apache.click.extras.controlというパッケージに用意されています。これは、「click-extras-xxx.jar」というファイルに用意されている拡張機能です。

 まずは、IntegerFieldを作成し組み込んでいる部分から。IntegerFieldでは、入力される値に関するいくつかのメソッドが用意されています。

field = new IntegerField("input","入力:");
field.setRequired(true);
field.setMinValue(0);
field.setMaxValue(100);

 インスタンス作成した後、「必須項目か否か」「最小値」「最大値」といったものを設定しています。必須項目かどうかは、前回使ってみました。new IntegerFieldする際に引数で指定することもできますが、このようにメソッドで設定することもできます。また最小値・最大値はIntegerFieldに用意されている(正確には、そのスーパークラスであるNumberField)メソッドで、これにより入力可能な値の範囲を設定することができます。

 作成されたIntegerFieldの入力チェックは、onPostで行っています。ここでは最初にformの「isValid」というメソッドをチェックしています。これは、入力された値をチェックした結果を示すもので、trueであればすべての値が正しい形式で入力されていることを示します。fieldではなくformのisValidを呼び出している点に注目してください。fieldにもisValidは用意されています。個々のコントロールごとにisValidでチェックをすることも可能ですが、formのisValidを使えば、そのフォームにaddされているすべてのコントロールをチェックし、すべてのisValidがtrueであるか知ることができます。

 isValidがtrueであれば、後は入力された値を取り出して計算し結果を表示するだけです。IntegerFieldには「getInteger」というメソッドがあり、これで入力された値をint値として取り出すことができます(もちろん、getValueでStringとして取り出すこともできます)。

 見れば分かるように、入力された値が正しい形式で書かれているか、実際にチェックする処理はありません。isValidはバリデーションの結果をチェックしているだけです。入力された値のバリデーション処理は、Apache Clickが行ってくれるため、プログラマが自分で処理を呼び出したりする必要はありません。

次のページ
主なバリデーション付コントロール

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4556 2014/04/17 09:39

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング