Spring не вызывает валидатор Hibernate для проверки параметров методов - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы использовать аннотации Hibernate Validator для проверки параметров моего запроса, которые передаются в запросе моему сервису.

@GET
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
void searchUsers(@Length(min = 3) @QueryParam("q") String searchTerm, @Range(min = 1, max = Integer.MAX_VALUE) @QueryParam("page") Integer page,
        @Suspended AsyncResponse response);

Выше приведен пример метода. Когда я размещаю запрос с параметром q в запросе длиной 2 символа, мой запрос не отклоняется с кодом 400, а вместо этого проходит весь путь до уровня обслуживания. Также, если для параметра page установлено отрицательное число, проверка не происходит.

В моем pom.xml я включил зависимость валидатора Hibernate:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>5.4.1.Final</version>
</dependency>

Версия Spring, которую я использую: 4.1.6.

Кроме того, в моем applicationContext.xml есть следующие компоненты:

<bean id="validator"   class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>

Есть ли что-то еще, что мне нужно настроить / включить?

1 Ответ

0 голосов
/ 17 мая 2018

@Length ограничение считает null значения действительными.Следовательно, кажется, что вам нужно либо установить значение по умолчанию для q, либо добавить к нему @NotNull.

...