Spring不会为方法参数验证调用Hibernate验证器

时间:2018-05-16 19:02:06

标签: java hibernate-validator spring-4

我想利用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 :(得分:-1)

@Length约束将null值视为有效。因此,您似乎需要为q设置默认值或向其添加@NotNull