[英]How mix Spring Validator and JSR 303
我想通过使用注释和 Spring 验证器来执行验证。
产品.java
public class Product {
private int id;
@NotNull(message = "cannot be null")
private String desc;
// getters and setters
}
ProductValidator.java
public class ProductValidator implements Validator {
public boolean supports(Class<?> aClass) {
return Product.class.equals(aClass);
}
public void validate(Object obj, Errors errors) {
Product p = (Product) obj;
if (p.getId() <= 0) {
errors.rejectValue("id", "id must be positive");
}
}
}
主要.java
public static void main(String[] args) {
Product product = new Product();
DataBinder binder = new DataBinder(product);
binder.addValidators(new ProductValidator());
binder.validate();
System.out.println(binder.getBindingResult());
}
我原以为 output 中有两个错误,但我只得到 Spring 验证器的错误。
我错过了什么?
DataBinder 验证器最初是空的。 执行
尝试添加 JSR 303 验证器,如下所示:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
DataBinder binder = new DataBinder(product);
binder.addValidators(new ProductValidator());
binder.addValidators(new SpringValidatorAdapter(factory.getValidator()));
binder.validate();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.