【发布时间】:2018-10-26 22:37:53
【问题描述】:
我想利用 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);
上面是一个方法的例子。当我在 2 个字符长的请求中发出带有 q 参数的请求时,我的请求不会被 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:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
还有什么我需要配置/启用的吗?
【问题讨论】:
标签: java hibernate-validator spring-4