SpringBoot检验注解
@Null 限制只能为null
@NotNull 限制必须不为null
@NotEmpty 只作用于字符串类型,字符串不为空,并且长度不为0
@NotBlank 只作用于字符串类型,字符串不为空,并且trim()后不为空串
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过Integer,小数部分的位数不能超过fraction
@Future 限制必须是一个将来的日期
@Past 验证注解的元素值(日期类型)比当前时间早
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
注意:
@NotNull 适用于任何类型被注解的元素必须不能与NULL
@NotEmpty 适用于String Map或者数组不能为Null且长度必须大于0
@NotBlank 只能用于String上面 不能为null,调用trim()后,长度必须大于0
单个参数校验@RestController@RequestMApping("validator/")@Validatedpublic class ValidatorController {@GetMapping("/add")public String add(@NotNull(message = "address不能为空") String address) {return "检验通过";
请求:127.0.0.1:8080/validator/add?address=中国
返回:检验通过
请求:127.0.0.1:8080/validator/add
返回:address不能为空
说明:在进行单个参数校验时,一定要在Controler类上加@Validated注解,否则校验不会生效 。
实体类参数校验
实体User类
public class User {@NotBlank(message = "请输入名称")@Length(message = "名称不能超过个 {max} 字符", max = 5)public String name;@NotNull(message = "请输入年龄")@Range(message = "年龄范围为 {min} 到 {max} 之间", min = 1, max = 100)public Integer age;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;}
controller类
@RestController@RequestMapping("validator/")public class ValidatorController {@PostMapping("/add")public String addUser(@RequestBody @Valid User user, BindingResult bindingResult) {//查看所有字段是否验证通过if (bindingResult.hasErrors()) {//返回第一条错误信息return bindingResult.getAllErrors().get(0).getDefaultMessage();return "检验通过";
执行如下:
文章插图
文章插图
说明:如果采用BindingResult方式来存储异常结果,就必须自己来处理异常 。即接口中有BindingResult参数,就必须使用要有上方7,8,9行代码进行异常处理,否则程序会正常执行 。
统一异常管理
实体User类,同上 。controller类如下:
@RequestMapping("validator/")public class ValidatorController {@PostMapping("/add")public String addUser(@Valid @RequestBody User user) {return "检验通过";
执行结果:
文章插图
这里没有采用BindingResult来存储异常,程序在这里会报错 。可以在这个地方增加统一异常管理 。通过报错信息可以知道需要对MethodArgumentNotValidException进行管理,代码如下:
@RestControllerAdvicepublic class ValidatedExceptionHander {@exceptionHandler(MethodArgumentNotValidException.class)public String MethodArgumentNotValidHandler(MethodArgumentNotValidException exception) {String exceptionInfo = exception.getBindingResult().getAllErrors().get(0).getDefaultMessage();return exceptionInfo;
再次执行:
推荐阅读
- USB接口知识大全
- 玻璃材质参数怎么调?VRay里如何设置玻璃材质参数?
- badboy什么意思中文 badboy什么意思
- 数字电视机顶盒usb接口有什么用 数字电视机顶盒usb
- 360手机N6(1707-A01 360n6pro刷第三方系统全网通基本配置参数)
- mini4平板参数,ipad mini4有多大内存?
- 金立m7参数--金立m7power跟金立m7区别?
- expresscard接口图__expresscard是什么意思?
- 3M耳塞好用吗?隔音效果如何 3m1270耳塞参数
- 华为5i详细参数-华为nova5i值得买吗?