簡體   English   中英

Spring不會調用Hibernate驗證器進行方法參數驗證

[英]Spring doesn't invoke Hibernate validator for method params validation

我想利用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:

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

我還需要配置/啟用其他功能嗎?

@Length約束將null值視為有效。 因此,似乎您需要為q設置默認值或向其添加@NotNull

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM