threeperson
发布于 2017-08-10 / 0 阅读
0
0

hibernate-validation 快速认证

Validator validate时会逐个校验bean 中加了验证注解的字段,然后返回一个错误列表。

现实开发中,这样的验证未免有些浪费,当有一个验证不ok,就应该直接返回,既节省了时间,

也满足了验证需求。

Validator 事实上是支持快速验证失败的。只需要在构建Validator,开启failFast。Validator验证

遇到一个错误,就不在继续验证剩余的字段了。

```

private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

public static <T> void validate(T t) {

Validator validator = factory.unwrap(HibernateValidatorFactory.class).usingContext()

.failFast(true)

.getValidator();

Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);

if (constraintViolations.isEmpty()) {

return;

}

ConstraintViolation<T> violation = Lists.newArrayList(constraintViolations).get(0);

String error = violation.getMessage();

Path.Node node = violation.getPropertyPath().iterator().next();

String field = node.getName();

throw new BusinessException(ProtocolErrorCode.REQUEST_PARAMS_INVALID, field + error);

}

```


评论