我有一个自定义界面:
@Target({ FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { MyCustomValidator.class })
@Documented
public @interface ValidData {
String message() default EMPTY;
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
我有一个带有附加有此验证器的字段的类:
public class RecoverData {
@ValidData(groups = AfterDefaultGroup.class)
private String data;
MyCustomValidator
类具有以下方法:
public class MyCustomValidator implements ConstraintValidator<ValidData, RecoverData> {
@Override
public boolean isValid(RecoverData recoverData, ConstraintValidatorContext constraintValidatorContext) {
//my custom logic regarding recoverData.getData()
return true;
}
}
现在,当我尝试运行它时,出现以下错误:
找不到约束'com.myPackage.ValidData'验证类型'java.lang.String'的验证器。检查“数据”的配置
在这种情况下我该怎么办?
答案 0 :(得分:2)
您已经为String
字段而不是RecoverData
类型应用了自定义验证器-因此,您的自定义验证器实际上应该是: / p>
public class MyCustomValidator implements ConstraintValidator<ValidData, String> {
@Override
public boolean isValid(String data, ConstraintValidatorContext context) {
//my custom logic regarding recoverData.getData()
return true;
}
}