[英]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.