使用Spring Boot 1.4和Spring Data Rest/MVC我无法获得@Valid @RequestBody的工作。我已经尝试过多个版本的Hibernate Validator,声明Validator beans等。没有运气。春季休眠验证@RequestBody
@BasePathAwareController
@RestController
public class TestRestController extends BaseController {
@PostMapping("/pojo/save")
public @ResponseBody ResponseEntity<?> upload(@Valid @RequestBody MyPojo pojo) {
// Code here calling a repository.save.
}
MyPojo包含各种验证注解即@digits,@NotNull,等我真正看到验证异常时repostiory.save方法被调用,但春节不试图对POJO任何验证。
这里是我的POM的包括弹簧的依赖部分:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
任何想法,将不胜感激。我做了大量的搜索,并尝试了许多不同的配置,没有任何运气。
更新
当试图将实体保存到数据库中,发生的验证错误时的。我收到以下错误:
Caused by: javax.persistence.RollbackException: Error while committing the transaction
Caused by: javax.validation.ConstraintViolationException: Validation failed for classes
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='numeric value out of bounds (<9 digits>.<3 digits> expected)...
如果您在前端使用Spring表单,请将'@ RequestBody'更改为'@ ModelAttribute'如果可能,请显示前端代码(如何调用此请求) –
这是一个REST端点,所以我只是使用邮差客户端在主体中使用JSON对象进行POST。 – tlavarea
[this](http://blog.codeleak.pl/2013/09/request-body-validation-in-spring-mvc-3.2.html)和[此链接](https://dzone.com/articles/spring-31-valid-requestbody)可能对你有所帮助 –