我在控制器 (Controller) 的方法上加上了 @Valid 属性但是传入无效的数据后,SpringBoot 根本就没有校验数据。经查询原因是在 SpringBoot 2.3.0 以后,我们需要给 pom.xml 加入下面的依赖项,SpringBoot 校验属性 @Valid 才会起作用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
以下是参考代码:
我们要求Person.Name属性不能为空。
package com.example.demo.model;
import javax.validation.constraints.NotBlank;
import java.util.UUID;
public class Person {
@NotBlank
private String name;
private UUID id;
public Person(UUID id, String name) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public UUID getId() {
return id;
}
}
以下是加了 @Valid 属性的 Controller的方法:
@PostMapping
public UUID addPerson(@Valid @NotNull @RequestBody Person person)
{
return this.personService.AddPerson(person);
}
下面是完整的参考代码:
spring-boot-tutorial