找不到针对字符串字段的验证器

时间:2019-02-22 15:17:38

标签: java spring string spring-boot spring-validator

我有一个自定义界面:

@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'的验证器。检查“数据”的配置

在这种情况下我该怎么办?

1 个答案:

答案 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;
  }

}