找不到字符串字段的验证器
No validator can be found for String field
我有一个自定义界面:
@Target({ FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { MyCustomValidator.class })
@Documented
public @interface ValidData {
String message() default EMPTY;
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
我有一个 class,其中一个字段附加了这个验证器:
public class RecoverData {
@ValidData(groups = AfterDefaultGroup.class)
private String data;
MyCustomValidator
class有以下方法:
public class MyCustomValidator implements ConstraintValidator<ValidData, RecoverData> {
@Override
public boolean isValid(RecoverData recoverData, ConstraintValidatorContext constraintValidatorContext) {
//my custom logic regarding recoverData.getData()
return true;
}
}
现在,当我尝试 运行 它时,出现以下错误:
No validator could be found for constraint 'com.myPackage.ValidData' validating type 'java.lang.String'. Check configuration for 'data'
遇到这种情况我该怎么办?
您已应用您的自定义验证器用于 String
字段 而不是 RecoverData
类型 - 所以您的自定义验证器实际上应该是:
public class MyCustomValidator implements ConstraintValidator<ValidData, String> {
@Override
public boolean isValid(String data, ConstraintValidatorContext context) {
//my custom logic regarding recoverData.getData()
return true;
}
}
我有一个自定义界面:
@Target({ FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { MyCustomValidator.class })
@Documented
public @interface ValidData {
String message() default EMPTY;
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
我有一个 class,其中一个字段附加了这个验证器:
public class RecoverData {
@ValidData(groups = AfterDefaultGroup.class)
private String data;
MyCustomValidator
class有以下方法:
public class MyCustomValidator implements ConstraintValidator<ValidData, RecoverData> {
@Override
public boolean isValid(RecoverData recoverData, ConstraintValidatorContext constraintValidatorContext) {
//my custom logic regarding recoverData.getData()
return true;
}
}
现在,当我尝试 运行 它时,出现以下错误:
No validator could be found for constraint 'com.myPackage.ValidData' validating type 'java.lang.String'. Check configuration for 'data'
遇到这种情况我该怎么办?
您已应用您的自定义验证器用于 String
字段 而不是 RecoverData
类型 - 所以您的自定义验证器实际上应该是:
public class MyCustomValidator implements ConstraintValidator<ValidData, String> {
@Override
public boolean isValid(String data, ConstraintValidatorContext context) {
//my custom logic regarding recoverData.getData()
return true;
}
}