Я создал пользовательскую аннотацию.
@Constraint(validatedBy = CourseCodeConstraintValidator.class)
@Target({ElementType.FIELD , ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CourseCode {
//define default course code
public String value() default "LUV";
//define default error message
public String message() default "must start with LUV";
//define default groups
public Class<?>[] groups() default {};
//define default payloads
public Class<? extends Payload>[] payload() default {};
}
Тогда у меня есть класс валидатора для пользовательской аннотации.
public class CourseCodeConstraintValidator implements ConstraintValidator<CourseCode , String>{
private String coursePrefix;
enter code here
public void initialize(CourseCode theCourseCode) {
coursePrefix = theCourseCode.value();
}
@Override
public boolean isValid(String theCode, ConstraintValidatorContext theConstraintValidatorContext) {
// TODO Auto-generated method stub
boolean result;
if(theCode != null) {
result = theCode.startsWith(coursePrefix);
}
else {
result = true;
}
return result;
}
}
У меня есть сомнение в методе initialize (CourseCode theCourseCode) в классе CourseCodeValidator. Как инициализируетсяCourseCode? theCourseCode должен быть нулевым, поскольку я не создал объект (theCourseCode = new CourseCode ();). Я в состоянии получить доступ к методу valueCourseCode.value (). Как это происходит?