> 文档中心 > 数据校验规则

数据校验规则

       数据校验是开发过程中一个常见的环节,一般来说,为了提高系统运行效率,都会在前端进行数据校验,但是这并不意味着不必在后端做数据校验了,因为用户还是可能在获取数据接口后手动传入非法数据,所以后端还是需要做数据校验。 Spring Boot 对此也提供了相 的自动化配置解决方案。

1、普通校验

1.1 引入相关依赖包

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-validation</artifactId></dependency>

1.2 resource目录下创建配置文件ValidationMessages.properties

user.name.size=用户名的长度在5到10个字符之间user.address.notnull=用户地址不能为空user.age.size=年龄输入不正确user.email.notnull=邮箱不能为空user.email.pattern=不正确的电子邮件格式

1.3 创建需要校验的实体类

import javax.validation.constraints.*;public class User {    private Integer id;    @Size(min = 5, max= 10 , message = "{user.name.size}")    private String name ;    @NotNull(message ="{user.address.notnull}")    private String address ;    @DecimalMin(value = "1", message ="{user.age.size}")    @DecimalMax(value = "200", message ="{user.age.size}")    private Integer age ;    @Email(message ="{user.email.pattern}")    @NotNull(message ="{user.email.notnull}")    private String email ;//省略get/set方法}

代码解释:

  • @Size 示一个字符串的长度或者一个集合的大小,必须在某一个范围中; min 参数表示范围的下限; max参数表示范围的上限; message 表示校验失败时的提示信息。
  • @NotNull 注解表示该字段不能为空。
  • @DecimalMin 注解表示对应属性值的下限,@DecimalMax 注解表示对应属性值的上限
  • @Email 注解表示对应属性格式是一个 Email

1.4 创建 UserController

@RestControllerpublic class UserController {    @PostMapping("/user")    public List<String> addUser(@RequestBody @Validated User user, BindingResult result) { List<String> errors = new ArrayList<>(); if (result.hasErrors()) {     List<ObjectError> allErrors = result.getAllErrors();     for (ObjectError error : allErrors) {  errors.add(error.getDefaultMessage());     } } return errors;    }}

数据校验规则

2、分组校验

有的时候开发者在某一个实体类中定义了很多校验规 ,但是在某一次业务处理中,并不需要这么多校验规,次时就可以使用分组校验。

2.1 分别创建两个分组接口

public interface ValidationAddGroup {}public interface ValidationUpdateGroup {}

2.2 需要校验的实体类

public class User {    private Integer id;    @Size(min = 5, max= 10 , message = "{user.name.size}", groups = ValidationAddGroup.class)    private String name ;    @NotNull(message ="{user.address.notnull}",groups = ValidationUpdateGroup.class)    private String address ;    @DecimalMin(value = "1", message ="{user.age.size}")    @DecimalMax(value = "200", message ="{user.age.size}")    private Integer age ;    @Email(message ="{user.email.pattern}")    @NotNull(message ="{user.email.notnull}",groups = ValidationUpdateGroup.class)    private String email ;}

controller

@PostMapping("/user1")public List<String> addUser1(@RequestBody @Validated(ValidationAddGroup.class) User user, BindingResult result) {    List<String> errors = new ArrayList<>();    if (result.hasErrors()) { List<ObjectError> allErrors = result.getAllErrors(); for (ObjectError error : allErrors) {     errors.add(error.getDefaultMessage()); }    }    return errors;}

数据校验规则

3、校验注解

数据校验规则
数据校验规则

校验时返回的提示乱码解决办法如下:

数据校验规则