在Java中创建自定义批注和批注的验证器

时间:2019-06-30 14:35:09

标签: java spring validation annotations

我已经创建了自定义注释。

@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;
}

}

我在CourseCodeValidator类的initialize(CourseCode theCourseCode)方法中有一个疑问。 TheCourseCode如何初始化? theCourseCode应该为null,因为我还没有创建对象(theCourseCode = new CourseCode();)。我可以通过theCourseCode.value()访问value方法。这是怎么回事?

0 个答案:

没有答案