在service层验证对JSR303进行验证

一般都是在实体类上加上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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容