首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot数据校验

数据校验是一个相当重要的环节,使用Spring Boot 进行数据校验。

添加校验依赖

全部依赖文件如下

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;

}

}

测试结果

小明菜市场

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200622A0RH7M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券