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ネッ♪