在service层验证对JSR303进行验证

2017-11-28  本文已影响0人  花溪的小石头

一般都是在实体类上加上JSR303注解,例如:

public Class People{
@NotBlank
private String name;
}

在Controller中添加@valid或者@validated注解旨在接收到请求时进行JSR303的验证。

@RequestMappint("xxx")
public String get(@Valid People people){
......
}

但是把@Valid或者@Validated注解放在service层,直接调用service的方法是不会进行JSR303验证的。为此,显式的调用就显得尤为重要:

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    Set<ConstraintViolation<T>> constraintViolations = validator.validate(想要验证的bean);
    ConstraintViolation<T> constraintViolation = getFirst(constraintViolations, null);
    if (constraintViolation != null) {
      throw new ValidationException(constraintViolation.getMessage());
}

使用javax.validation.Validator即可做到在任何地点显式验证JSR303

上一篇 下一篇

猜你喜欢

热点阅读