【问题标题】:No validator can be found for String field找不到字符串字段的验证器
【发布时间】:2019-02-22 15:17:38
【问题描述】:

我有一个自定义界面:

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

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

【问题讨论】:

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


    【解决方案1】:

    您已应用您的自定义验证器用于 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;
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2016-09-21
      • 1970-01-01
      相关资源
      最近更新 更多