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