【问题标题】:Override error message in spring validator覆盖弹簧验证器中的错误消息
【发布时间】:2016-05-24 12:59:30
【问题描述】:

假设我用 Spring 做休息服务。

假设我需要应用于整个类型/类的自定义验证器,即@Target({ElementType.TYPE})。验证器的逻辑非常笨拙,不能简化为子验证器或字段验证器。

所以有时很难理解到底是什么错误,我需要添加不同的错误消息。

我不知道该怎么做。有可能吗?

例如:

public class ReportConstraintValidator implements ConstraintValidator<ValidReport, Report> {

    @Autowired
    DesignRepository designRepository;

    @Override
    public void initialize(ValidReport constraintAnnotation) {
    }

    @Override
    public boolean isValid(Report report, ConstraintValidatorContext context) {
        ...
        // here goes "foo error message"
        return false;
        ...
        // here goes "bar error message"
        return false;
    }
}

【问题讨论】:

  • 使用弹簧Validator 而不是javax.validation 或查看ConstraintValidatorContext 的文档。
  • @M.Deinum 这正是我一直在寻找的!谢谢!

标签: java spring validation spring-validator


【解决方案1】:

按照 M.Denium 建议解决

public class ReportConstraintValidator implements ConstraintValidator<ValidReport, Report> {

@Autowired
DesignRepository designRepository;

@Override
public void initialize(ValidReport constraintAnnotation) {
}

@Override
public boolean isValid(Report report, ConstraintValidatorContext context) {
    ...
    context.buildConstraintViolationWithTemplate("foo error message").addConstraintViolation();
    return false;
    ...
    context.buildConstraintViolationWithTemplate("foo error message").addConstraintViolation();
    return false;
}
}

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2017-09-06
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多