目录
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
常见的注解:
注解 | 说明 | 示例 |
| 确保字段不为 |
|
| 确保字段必须为 |
|
| 确保集合、字符串、数组等非空(不能为空且长度大于 0) |
|
| 确保字符串非空(忽略空格) |
|
| 限制字符串、集合、数组的长度或大小范围 |
|
| 使用正则表达式校验字段格式 |
|
数值相关的校验注解
注解 | 说明 | 示例 |
| 指定最小值 |
|
| 指定最大值 |
|
日期和时间相关校验注解
注解 | 说明 | 示例 |
| 确保日期在未来 |
|
| 确保日期在未来或现在 |
|
| 确保日期在过去 |
|
| 确保日期在过去或现在 |
|
常用特定用途校验注解
注解 | 说明 | 示例 |
| 校验邮箱格式 |
|
| 校验 URL 格式 |
|
| 校验信用卡号码 |
|
例:
编写后端验证的类:
package com.example.emos.wx.controller.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
@Data
@ApiModel
public class TestSayHelloForm {
@NotBlank //非空字符串
@Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,15}$") //2到15个字符
@ApiModelProperty("姓名")
private String name;
}
-
@NotBlank
:校验字段不能为空,并自动去除前后空格。 -
@Pattern
:使用正则表达式校验字段格式,此处校验姓名必须是 2 到 15 个中文字符。 -
@ApiModelProperty
:为 Swagger 文档提供字段描述。
注:正则表达式可以通过工具来编写
使用到controller上:
通过 POST 请求接收表单数据,并返回校验结果。
package com.example.emos.wx.controller;
import com.example.emos.wx.common.util.R;
import com.example.emos.wx.controller.form.TestSayHelloForm;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping("/test")
@Api("测试Web接口")
public class TestController {
@ApiOperation("最简单的测试方法")
@PostMapping("/sayHello")
//@Valid:用于启用校验机制
public R sayHello(@RequestBody @Valid TestSayHelloForm form) {
return R.ok().put("message","Hello"+form.getName()+"!");
}
}
-
@Valid
:启用表单类的校验机制。 -
@RequestBody
:将 JSON 数据映射为TestSayHelloForm
对象。
通过swagger进行测试:
错误验证:
返回结果:
因为我们校验的name条件是 2-15个中文字符,显然“”String“并不符合条件,所以返回了错误的信息。
正确验证:
返回结果:
这次我们校验的name值在正确的范围内,所以返回正确的提示信息