Validationについて
次はValidationについてです。
画面遷移時にValidationについての話が出てきました。
ではどのようにPageクラスのValidationをするのでしょうか。
こちらはS2JSFやS2Strutsを使ったことのある人なら馴染みの
ある方法を採用しています。
そう、定数アノテーションとTigerアノテーションです。
TeedaはJDK1.4に対応しているため、定数アノテーションでも使えます。
Tigerアノテーションでも使えますが、まずは定数アノテーションを使ってみましょう。
定数アノテーションの記法は以下のようになっています。
public static final String プロパティ名_Validator名 = "Validatorの各プロパティの設定";
例えば、下記のような足し算の入力画面のPageクラスがあるとします。
このクラスでは、引数にarg1とarg2をとり、両方とも入力必須で
桁数が3桁以上入力されなくてはいけないとします。
AddInputPage.java
public class AddInputPage { private Integer arg1; private Integer arg2; public Integer getArg1() { return arg1; } public void setArg1(Integer arg1) { this.arg1 = arg1; } public Integer getArg2() { return arg2; } public void setArg2(Integer arg2) { this.arg2 = arg2; } }
このような場合にどうすればよいのでしょうか。
上記の記述を思い出しながらやってみましょう。
まずプロパティarg1に必須項目のValidatorをしかけましょう。
どんなValidatorがあるのか今は気にしないでください。あとできちんと明記します。
public static final String プロパティ名_Validator名 = "Validatorの各プロパティの設定";
が記法なので、
public static final String arg1_TRequiredValidator = null;
というようになります。所定のValidatorに与えるプロパティがnullの場合は上記のように
してもらえればよいです。
これでarg1に必須チェックがかかります。
さて、次は入力桁が3桁以上でなければいけないというチェックですが、
標準のValidatorにLengthValidatorというValidatorがあります。
これを使いましょう。
今度はLengthValidatorのプロパティにきちんと値を渡さなくてはいけないですね。
最小の桁数が3桁なので、minimum=3というプロパティを渡します。
public static final String arg1_lengthValidator = "minimum=3";
さあ、これでValidationがかかります。
同じようにarg2でもValidationをかけることが出来ます。
先ほど示した例はこのようになります。
AddInputPage.java
public class AddInputPage { public static final String arg1_TRequiredValidator = null; public static final String arg1_lengthValidator = "minimum=3"; public static final String arg2_TRequiredValidator = null; public static final String arg2_lengthValidator = "minimum=3"; private Integer arg1; private Integer arg2; public Integer getArg1() { return arg1; } public void setArg1(Integer arg1) { this.arg1 = arg1; } public Integer getArg2() { return arg2; } public void setArg2(Integer arg2) { this.arg2 = arg2; } }
このようにValidatorをしかけていきます。
Validatorは各プロパティごとに書かれた順番どおりに呼ばれます。
上記の例だと、arg1はTRequiredが呼ばれて、その後にLengthValidatorが呼ばれます。
Tigerでも同じ仕組みで行われます。この例は各Validatorを説明した後に書きたいと思います。
次は各Validatorについて見ていきましょう。