EzServlet/validate機能をブラッシュアップ!


以前、ご説明したEzServletの検証機能ですが、直感的に利用できなかったためブラッシュアップしました。

以前の検証機能は、下記の通りです。

2009-01-30 - T.RYoken がんばる日記 / TryGun blog

 実際に「数値(正数少数)チェック」を行うソースを見てみましょう

 String value = "100";
 // チェック結果を保持する属性の宣言と初期化を行ないます。
 EzMessage message = new EzMessage("プロパティー・ファイルのPATH");
 // 入力値の数値(正数少数)妥当性チェックを行ういます。
 if(EzValidationFunction.checkNumeric("プロパティー・キー", 0, 10, 0, 5, value, true, message)) {
		 System.out.println(value+"は数値です。");
 } else {
		 System.out.println(value+"は数値ではありません。");
 }

EzValidationFunction#checkNumericのシグニチャを見ていただければ分かる通り、直感的に利用できません。

検証のソースを記述している最中に、第一引数には、何をわたすんだっけ?となりがちです。。。orz

新しい検証機構では、直感的に利用することが可能になります。

例として、「名前」と「年齢」項目の検証を行う場合のソースを記述してみます。

import static are.trygun.framework.util.validate.EzValidateUtil.*;

public class Hoge {
	/** エラーメッセージ*/
	public String[] errors;
	/** 名前項目の入力値 */
	public String name;
	/** 年齢項目の入力値 */
	public String age;
		
	/** 画面入力値の検証を行うメソッド */
	public boolean validate() {
		// チェック結果を保持する属性の宣言と初期化を行ないます。
		EzMessage message = new EzMessage("プロパティー・ファイルのPATH");

		// 「名前」項目の入力値検証を行います。
		// 「検証内容」入力必須、最大桁数10桁、アルファベット、半角カタカナ、記号、全角文字入力可能
		character(message).name("label.name").required().digit(10)
		         .alphabet().kana().sign().emSize().validate(this.name); 

		// 「年齢」項目の入力値検証を行います。
		// 「検証内容」入力必須、最大桁数3桁、0を入力値として認めない
		numeric(message).name("label,age").required().digit(,3).excludeZero()
		        .validate(this.age); 

		// メッセージをセットします。
		errors = message.getMessage();
		// 検証結果を返します。
		return message.isSuccess();
	}
}


見ていただければ、分かる通り、検証機能を「流れるようなインターフェース」で実装することが可能です。

設定情報は、検証内容(文字、数値、日付、時間、ファイル)によって、呼び出せるメソッドが変わります。

上記の例で言えば、「numeric()...」では「alphabet()」メソッドは呼び出せません。ここで、大事なのは、実行時エラーになるのではなく、コンパイルエラーになるということです。

流れるようなインターフェースで、メソッドで設定を行えるということは、Eclipseの補完機能(Ctrl + スペース)がフルに利用可能になるわけです。。。

*当然、各メソッドのJavadocも補完機能から参照できます。

文字「character()...」の場合は、文字チェック用のメソッドのみが一覧表示され、数値「numeric()...」の場合は、数値チェック用のメソッドのみが一覧表示されるのです。



注意1

   EzValidateUtilの「public static」メソッドは、以下の5種類のみです。
   ・character(EzMessage) … 文字の検証用メソッド
   ・numeric(EzMessage) … 数値の検証用メソッド
   ・date(EzMessage) … 日付の検証用メソッド
   ・time(EzMessage) … 時間の検証用メソッド
   ・file(EzMessage) … アップロードファイルの検証用メソッド

注意2

   EzServletでは、EzValidateUtilの利用は必須ではありません。各プロジェクトにあった検証機構を使って下さい。




超かーんたーん(o^∀^)oネッ♪