Validator/Converterをまとめる
そういえばいつか書こう書こうと思ってましたが、
Teedaでは、ValidatorやConverterをまとめて記述することが出来ます。
これは特に定数アノテーションしか使えない場合に威力を発揮します。
定数アノテーションは若干面倒だし、タイプミスする可能性もあるので。
サンプル実装を下記に示します。
まずはValidatorChainを継承して、Validatorを作ります。
(クラス名を本当はXxxValidatorChainにしたいのですが、
たぶんS2のValidatorのデフォルトの規約上見つけられない気がするのでXxxValidatorとします)
public class AddInputPageValidator extends ValidatorChain { private TRequiredValidator requiredValidator; private TLengthValidator lengthValidator; public TLengthValidator getLengthValidator() { return lengthValidator; } public void setLengthValidator(TLengthValidator lengthValidator) { AssertionUtil.assertNotNull("lengthValidator", lengthValidator); this.lengthValidator = lengthValidator; this.lengthValidator.setMinimum(3); add(lengthValidator); } public TRequiredValidator getRequiredValidator() { return requiredValidator; } public void setRequiredValidator(TRequiredValidator requiredValidator) { AssertionUtil.assertNotNull("requiredValidator", requiredValidator); this.requiredValidator = requiredValidator; add(requiredValidator); } }
で、今まで下記のようにばらばらに記述していたValidatorを、
//BEFORE 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";
このようにすっきりまとめることが出来ます。2つくらいなら大したこと無いですが、
実際の案件ではもっとたくさんのValidatorがあるでしょうから。
//AFTER public static final String arg1_addInputPageValidator = null; public static final String arg2_addInputPageValidator = null;
共通チームがまとめてValidatorを作って、複数の入力項目で同様のチェックを
行う場合なんかはこちらの方法のほうが有効です。
Tigerの場合はそれに更にTigerアノテーションを作る必要があります。
@Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.FIELD, ElementType.METHOD }) @Validator("addInputPageValidator") public @interface AddInputPageValidate { }
Validator名がダサいですが(w、大体このような感じでValidator/Converter
またはその複合を提供することが出来ます。