JSR 303 Bean Validationのリファレンス実装であるHibernate ValidatorにおけるCustom Validatorの作り方。
マニュアルを見るのが一番ですが、備忘に記載。
基本的には、Constraint ValidatorとConstraint Annotaionを作ればよい。
Constraint Annotation
マニュアルを見るのが一番ですが、備忘に記載。
基本的には、Constraint ValidatorとConstraint Annotaionを作ればよい。
Constraint Annotation
package com.example.validator; import java.lang.annotation.Documented; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.TYPE; import java.lang.annotation.Retention; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; import com.example.validator.constraints.TestValidator; @Documented @Constraint(validatedBy = TestValidator.class) @Target({ METHOD, FIELD, TYPE }) @Retention(RUNTIME) public @interface Test { String message() default "{com.exapmle.validator.Test.message}"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; }Constraint Validator
package com.example.validator.constraints; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import javax.validation.ValidationException; import com.example.validator.Test public class TestValidator implements ConstraintValidator<Test, String> { public void initialize(Test parameters) { } public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { if ( value == null ) { return true; } return value.equals("test"); } }http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/pdf/hibernate_validator_reference.pdf