gpt4 book ai didi

java - Spring 不会调用 Hibernate validator 来验证方法参数

转载 作者:行者123 更新时间:2023-12-01 06:03:46 32 4
gpt4 key购买 nike

我想利用 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 validator 依赖项:

<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"/>

我还需要配置/启用其他内容吗?

最佳答案

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

关于java - Spring 不会调用 Hibernate validator 来验证方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378248/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com