사용자 정의 제약 조건을 작성할 때 하나의 유효성 검사기 구현으로 여러 주석의 유효성을 검사 할 수 있습니다. 예를 들어, 다른 @size 주석을 규정하는 몇 가지 주석을 가지고 있지만, 모든 글로벌 검사를 수행하는 동일한 유효성 검사기 클래스를 가리 키도록합니다. 즉 모든 것이 특정 정규식과 일치해야합니다. 늘어나는만큼 구현은 하나의 주석 유형을 취합니다.JSR-303 Bean 유효성 검사 - 사용자 정의 제약 조건 하나의 유효성 검사기에 대한 복수 주석
한 주석
@Target({ METHOD, FIELD, ANNOTATION_TYPE, TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {UCNValidator.class})
@Documented
@Size(min = 9, max = 9, message = "{exactlength}")
public @interface UCN {
String message() default "{invalidFormat}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String fieldName() default "ucn";
}
public class UCNValidator implements ConstraintValidator<UCN, String>
{
private String pattern = "[a-zA-Z].*";
private String fieldName;
@Override
public void initialize(UCN constraintAnnotation)
{
this.fieldName = constraintAnnotation.fieldName();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext)
{
if (value != null)
{
if (!value.matches(pattern))
{
//do some stuff
return false;
}
}
return true;
}
이것이 최선의 방법은 아니 었습니다. 일반적인 유효성 검사 기능의 경우 모든 유효성 검사기에서 사용하는 일반적인 메서드를 작성할 수 있습니다. – andyfinch