我正在尝试将Spring 4.2.3与hibernate验证器v.5.2.2.Final集成,以验证使用REST Controller公开的输入JSON数据。 我没有看到任何编译时间或运行时异常,但同时它不验证输入数据。
的pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.3.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- jsr303 validation dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.2.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<version>5.2.2.Final</version>
</dependency>
Pojo java class:
public class RequestVO {
@NotEmpty
private String testValidation;
@NotNull
private String testNull;
@NotBlank
private String testBlank;
.... getters and setters .....
}
@Controller
@RequestMapping("/login")
public class LoginController {
@RequestMapping(method=RequestMethod.POST, value="/user")
public @ResponseBody ResponseVO getLoginResponse(@Valid @RequestBody RequestVO request, Errors error) {
ResponseVO response = new ResponseVO ();
if (error.hasErrors()) {
System.err.println("Success");
}
return response;
}
}
答案 0 :(得分:3)
在你的依赖列表中,有一条评论说 ... jsr303验证依赖... 。请注意,bean验证具有更新的规范(JSR-349),这很可能是您的问题。
您应该按以下方式对齐您的依赖项
hibernate-validator-5.x.x
validation-api-1.1.x
实施JSR-349
OR
hibernate-validator-4.x.x
validation-api-1.0.x.
实现JSR-303
如果混合使用依赖项,则验证将无法启动。作为解决方案建议,请添加
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
并确保删除对validation-api-1.0
jar
答案 1 :(得分:0)
我认为有兴趣看看这个link
如果要删除验证,只需从方法中移除@Valid
即可。