全部依赖文件如下
-
<?xml version="1.0" encoding="UTF-8"?>
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-
<modelVersion>4.0.0</modelVersion>
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>2.3.1.RELEASE</version>
-
<relativePath/> <!-- lookup parent from repository -->
-
</parent>
-
<groupId>com.example</groupId>
-
<artifactId>demo</artifactId>
-
<version>0.0.1-SNAPSHOT</version>
-
<name>demo</name>
-
<description>Demo project for Spring Boot</description>
-
-
<properties>
-
<java.version>1.8</java.version>
-
</properties>
-
-
<dependencies>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-validation</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
</dependency>
-
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-test</artifactId>
-
<scope>test</scope>
-
<exclusions>
-
<exclusion>
-
<groupId>org.junit.vintage</groupId>
-
<artifactId>junit-vintage-engine</artifactId>
-
</exclusion>
-
</exclusions>
-
</dependency>
-
</dependencies>
-
-
<build>
-
<plugins>
-
<plugin>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-maven-plugin</artifactId>
-
</plugin>
-
</plugins>
-
</build>
-
-
</project>
-
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<String> addUser(@Validated User user, BindingResult bindingResult){
-
List<String> errors = new ArrayList<>();
-
// 非空
-
if(bindingResult.hasErrors()){
-
// 查找出Error 进行添加到结果集
-
List<ObjectError> 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<String> addUser(@Validated(ValidationGroup2.class) User user, BindingResult bindingResult){
-
List<String> errors = new ArrayList<>();
-
// 非空
-
if(bindingResult.hasErrors()){
-
// 查找出Error 进行添加到结果集
-
List<ObjectError> allErrors = bindingResult.getAllErrors();
-
for (ObjectError allError : allErrors) {
-
errors.add(allError.getDefaultMessage());
-
}
-
}
-
return errors;
-
}
-
}
测试结果
小明菜市场