Как использовать проверку jooby-hbv - PullRequest
0 голосов
/ 05 марта 2019

Я хочу использовать подтверждение Jooby. Я просмотрел https://jooby.org/doc/hbv/, но не могу его использовать

1 Ответ

0 голосов
/ 05 мая 2019
  1. Вам нужно инициализировать Hibernate Validator в классе приложения.
    use(new Hbv(ClassUtils.getClasses("com.package.of.classes.validate")));
Аннотируйте свои классы с помощью валидаторов.Обратите внимание, что эти классы должны быть в вышеуказанном пакете.Пример:
    public class SampleRequest {
        @NotNull
        private Long id;
        @NotBlank
        String name;
        private @NotBlank
        String description;
        private @Min(1)
        double amount;
    }
Затем вы можете использовать общий обработчик ошибок в классе App.
     err((req, rsp, err) -> {
                Throwable cause = err.getCause();
                if (cause instanceof ConstraintViolationException) {
                    Set<ConstraintViolation<?>> constraints = ((ConstraintViolationException) cause)
                            .getConstraintViolations();

                    // handle errors, return error response 
                } else {
                   // ......
                }
            });
Или вы можете вручную подтвердить в вашем сервисе:
    private void validateRequest(SampleRequest sampleRequest) {
            Validator validator = factory.getValidator();
            Set<ConstraintViolation<SampleRequest>> constraintViolations =
                    validator.validate(sampleRequest);
            if (!constraintViolations.isEmpty()) {
                StringBuilder builder = new StringBuilder();
                for (ConstraintViolation<SampleRequest> error : constraintViolations) {
                    logger.error(error.getPropertyPath() + "::" + error.getMessage());
                    builder.append(error.getPropertyPath() + "::" + error.getMessage());
                }
                throw new IllegalArgumentException(builder.toString());
            }
    }
...