Java 如何在自定义约束验证器中使用注释元素
我在我的项目中编写了一个名为CGC的自定义注释:Java 如何在自定义约束验证器中使用注释元素,java,validation,annotations,Java,Validation,Annotations,我在我的项目中编写了一个名为CGC的自定义注释: @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented @Constraint(validatedBy = CGCValidator.class) public @interface CGC { String message() default "{person.cgc.error}";
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = CGCValidator.class)
public @interface CGC {
String message() default "{person.cgc.error}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
boolean canBeNull() default false;
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List {
CGC[] value();
}
}
@Target({方法、字段、注释\类型、构造函数、参数})
@保留(运行时)
@记录
@约束(validatedBy=CGCValidator.class)
公共@接口CGC{
字符串消息()默认值“{person.cgc.error}”;
类[]组()默认值{};
类您可以在初始化函数中捕获canBeNull值:
class CGCValidator implements ConstraintValidator<CGC, String> {
boolean canBeNull;
@Override
public void initialize(CGC constraintAnnotation) {
canBeNull = constraintAnnotation.canBeNull();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return canBeNull || value != null;
}
}
类CGCValidator实现ConstraintValidator{
布尔canBeNull;
@凌驾
公共无效初始化(CGC CONSTRAINTANOTION){
canBeNull=constraintanotation.canBeNull();
}
@凌驾
公共布尔值有效(字符串值、ConstraintValidatorContext上下文){
返回canBeNull | |值!=null;
}
}
class CGCValidator implements ConstraintValidator<CGC, String> {
boolean canBeNull;
@Override
public void initialize(CGC constraintAnnotation) {
canBeNull = constraintAnnotation.canBeNull();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return canBeNull || value != null;
}
}