SpringBoot 数据校验

文章目录

  • 引入依赖
  • 错误提示配置
  • 单独校验
    • 配置
    • 错误输出
  • 分组校验
    • 配置
    • 错误输出
  • 常用校验

接口参数校验,给出明确错误

引入依赖

<!-- 数据校验 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

错误提示配置

resources>>ValidationMessages.properties

user.name.size=用户名长度介于510个字符之间
user.address.notnull=用户地址不能为空
user.age.size=年龄输入不正确
user.email.notnull=邮箱不能为空
user.email.pattern=邮箱格式不正确

单独校验

配置

public class ValidUser {
    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;
}

错误输出

@RestController
public class ValidUserController {
    @PostMapping("/validUser")
    // @Validated,表示需要对该参数做校验
    // BindingResult,表示在校验出错时保存的错误信息
    public List<String> addValidUser(@Validated ValidUser 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;
    }
}

SpringBoot 数据校验_第1张图片

分组校验

只校验组内的数据

配置

1、创建分组接口

public interface ValidationGroup1 {}
public interface ValidationGroup2 {}

2、参数添加分组校验

public class ValidUser {
    private Integer id;
    @Size(min = 5,max = 10,message = "{user.name.size}", groups = ValidationGroup1.class)
    private String name;
    @NotNull(message = "{user.address.notnull}", groups = ValidationGroup2.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 = ValidationGroup2.class)
    private String email;
}

错误输出

@RestController
public class ValidUserController {
    @PostMapping("/validUser")
    // @Validated,表示需要对该参数做校验
    // BindingResult,表示在校验出错时保存的错误信息
    public List<String> addValidUser(@Validated(ValidationGroup2.class) ValidUser 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;
    }
}

SpringBoot 数据校验_第2张图片

常用校验

SpringBoot 数据校验_第3张图片

你可能感兴趣的:(spring,boot,后端,java)