создание пользовательских аннотаций и валидатор для аннотаций в Java - PullRequest
0 голосов
/ 30 июня 2019

Я создал пользовательскую аннотацию.

@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 (). Как это происходит?

...