覆盖 spring 验证器中的错误消息
Override error message in spring validator
假设我用 Spring 进行休息服务。
假设我需要应用于整个 type/class 的自定义验证器,即 @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;
}
}
已解决 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;
}
}
假设我用 Spring 进行休息服务。
假设我需要应用于整个 type/class 的自定义验证器,即 @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;
}
}
已解决 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;
}
}