JSR303 Bean Validationのfinal draftが出たらしい。
バリデータ自体はこんな感じで作るみたい。
@Constraint(validatedBy = { SizeValidatorForString.class, SizeValidatorForCollection.class } ) public @interface Size { String message() default "{constraint.size}"; Class<?>[] groups() default {}; int min() default 0; int max() default Integer.MAX_VALUE; } public class SizeValidatorForString implements<Size, String> { public void initialize(Size size) {} public boolean isValid(String value, ConstraintValidatorContext context) {} } public class SizeValidatorForCollection implements<Size, Collection> { public void initialize(Size size) {} public boolean isValid(Collection value, ConstraintValidatorContext context) {} }In Relation To... Bean Validation (JSR 303) hits proposed final draft
で、バリデーションをかけたいクラスにアノテーションをつける、と。
@Size //invalid usage of @Size Number number; Number number; @Pattern(regexp="[0-9]*") String number; @Max(500000) BigDecimal salary; @DecimalMax("27.5") BigDecimal luggageWeight;In Relation To... Bean Validation (JSR 303) hits proposed final draft
いい感じなんじゃないでしょうか。
こういうのは標準化してもらう方がいいですね。