添加校验依赖
全部依赖文件如下
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.3.1.RELEASE
com.example
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-validation
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
添加配置文件
user:
name:
size: 用户名长度不符合要求
age:
size: 年龄输入不正确
添加数据校验
package com.example.demo;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Size;
public class User {
private Integer id;
// 其长度
@Size(min = 5, max = 10, message = "{user.name.size}")
private String name;
// 其上限和下限
@DecimalMax(value = "200", message = "{user.age.size}")
@DecimalMin(value = "5", message = "{user.age.size}")
private Integer age;
// 省去get和set
}
编写控制器
package com.example.demo;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
@PostMapping("/user")
public List addUser(@Validated User user, BindingResult bindingResult){
List errors = new ArrayList<>();
// 非空
if(bindingResult.hasErrors()){
// 查找出Error 进行添加到结果集
List allErrors = bindingResult.getAllErrors();
for (ObjectError allError : allErrors) {
errors.add(allError.getDefaultMessage());
}
}
return errors;
}
}
其中BindingResult 类是用于保存错误信息的
测试
分组校验
添加分组接口
在实体类中添加分组信息
package com.example.demo;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Size;
public class User {
private Integer id;
// 其长度
@Size(min = 5, max = 10, message = "用户名长度不符合要求", groups = ValidationGroup1.class)
private String name;
// 其上限和下限
@DecimalMax(value = "200", message = "年龄输入不正确", groups = ValidationGroup2.class)
@DecimalMin(value = "5", message = "年龄输入不正确", groups = ValidationGroup2.class)
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
控制器使用其分组
package com.example.demo;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
@PostMapping("/user")
public List addUser(@Validated(ValidationGroup2.class) User user, BindingResult bindingResult){
List errors = new ArrayList<>();
// 非空
if(bindingResult.hasErrors()){
// 查找出Error 进行添加到结果集
List allErrors = bindingResult.getAllErrors();
for (ObjectError allError : allErrors) {
errors.add(allError.getDefaultMessage());
}
}
return errors;
}
}
更多学习内容请阅读我的知乎专栏: