spring validated 参数校验
maven: 必要jar
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.13.Final</version></dependency>
controller:
使用@Validated 注解对参数进行校验,@Validated后面必须是 BindingResult bindingResult 用于接收校验结果
package com.fostlin.jpa.controller;import com.fostlin.jpa.pojo.UserDO;
import io.swagger.annotations.*;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import javax.validation.Valid;/*** @Auther: linsiteng* @Date: 2020/7/29 15:07* @Description:*/
@Api(tags = "ObjectVerifyTestController",description="Verify 验证参数注解测试类" )
@RestController
@RequestMapping("/verify")
public class ObjectVerifyTestController {@ApiOperation(value = "User校验")@PostMapping("/user")public String verifyUser(@Validated @RequestBody @ApiParam(value="个人详细信息", required=true)UserDO user, BindingResult bindingResult){System.out.println(bindingResult.hasErrors());if(bindingResult.hasErrors()){return bindingResult.getFieldError().getDefaultMessage();}System.out.println(user);return "校验通过";}
}
实体类:
注解说明
注解说明
1.@NotNull:不能为null,但可以为empty(""," "," ") 2.@NotEmpty:不能为null,而且长度必须大于0 (" "," ")3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0("test") 即:必须有实际字符
复制代码
验证注解 | 验证的数据类型 | 说明 |
---|---|---|
@AssertFalse | Boolean,boolean | 验证注解的元素值是false |
@AssertTrue | Boolean,boolean | 验证注解的元素值是true |
@NotNull | 任意类型 | 验证注解的元素值不是null |
@Null | 任意类型 | 验证注解的元素值是null |
@Min(value=值) | BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 | 验证注解的元素值大于等于@Min指定的value值 |
@Max(value=值) | 和@Min要求一样 | 验证注解的元素值小于等于@Max指定的value值 |
@DecimalMin(value=值) | 和@Min要求一样 | 验证注解的元素值大于等于@ DecimalMin指定的value值 |
@DecimalMax(value=值) | 和@Min要求一样 | 验证注解的元素值小于等于@ DecimalMax指定的value值 |
@Digits(integer=整数位数, fraction=小数位数) | 和@Min要求一样 | 验证注解的元素值的整数位数和小数位数上限 |
@Size(min=下限, max=上限) | 字符串、Collection、Map、数组等 | 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小 |
@Past | java.util.Date,java.util.Calendar;Joda Time类库的日期类型 | 验证注解的元素值(日期类型)比当前时间早 |
@Future | 与@Past要求一样 | 验证注解的元素值(日期类型)比当前时间晚 |
@NotBlank | CharSequence子类型 | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格 |
@Length(min=下限, max=上限) | CharSequence子类型 | 验证注解的元素值长度在min和max区间内 |
@NotEmpty | CharSequence子类型、Collection、Map、数组 | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@Range(min=最小值, max=最大值) | BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 | 验证注解的元素值在最小值和最大值之间 |
@Email(regexp=正则表达式,flag=标志的模式) | CharSequence子类型(如String) | 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式 |
@Pattern(regexp=正则表达式,flag=标志的模式) | String,任何CharSequence的子类型 | 验证注解的元素值与指定的正则表达式匹配 |
@Valid | 任何非原子类型 | 指定递归验证关联的对象如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证 |
package com.fostlin.jpa.pojo;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;import javax.validation.Valid;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.Date;/*** @Auther: linsiteng* @Date: 2020/7/29 15:12* @Description:*/
@Data
@ApiModel(description= "个人信息")
/*@Setter
@Getter
@ToString*/
public class UserDO implements Serializable {@ApiModelProperty(value = "姓名")@NotBlank(message = "姓名不能为空!")private String name;@NotNull(message = "年龄不能为空")@Min(value = 1,message = "年龄不能小于1")@ApiModelProperty(value = "年龄")private Integer age;@NotNull(message = "性别不能为空")@Size(min=1,max = 1,message = "性别字段超出长度")@ApiModelProperty(value = "性别")private String gender;/** 邮箱*/@ApiModelProperty(value = "邮箱")@NotBlank(message = "联系邮箱不能为空")@Email(message = "邮箱格式不对")private String email;/** 手机号*/@ApiModelProperty(value = "手机号")@NotBlank(message = "手机号不能为空")@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")private String mobile;@ApiModelProperty(value = "时间")@Past(message = "不能大于当前日期")private Date date;@ApiModelProperty(value = "测试字段")@Validprivate VerifyTest verifyTest;
}
spring validated 参数校验相关推荐
- Spring Validated分组校验
使用Spring Validated时,一直不知道有分组校验,分组校验时都在service层使用if else判断校验,感觉这样写不是太友好,后期知道Spring Validated分组校验后,就写了 ...
- Validated参数校验
这里写自定义目录标题 标签含义 Validated参数校验 全局捕获异常 实体类 错误信息处理类 标签含义 限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @Ass ...
- Spring Boot参数校验以及分组校验的使用
简介:做web开发基本上每个接口都要对参数进行校验,如果参数比较少,还比较容易处理,一但参数比较多了的话代码中就会出现大量的if-else语句.虽然这种方式简单直接,但会大大降低开发效率和代码可读性. ...
- Spring Boot参数校验
1. 概述 作为接口服务提供方,非常有必要在项目中加入参数校验,比如字段非空,字段长度限制,邮箱格式验证等等,数据校验常用到概念: JSR303/JSR-349: JSR303是一项标准,只提供规范不 ...
- 参数幂等性校验失败_快速入手 Spring Boot 参数校验
1.背景介绍 2.Spring Boot文档中的Validation 3.Hibernate Validator 4.Spring Validator 5.示例 6.补充 <Netty 实现原理 ...
- spring boot参数校验 告别校验胶水代码
springboot进行参数校验 文章目录 前言 普通的逻辑代码校验 PathVariable 路径变量校验 JSR规范是什么? springboot-JSR303参数校验 引入参数校验依赖 官网 ...
- Spring MVC 参数校验
Spring 4 以上支持JSR303校验API.所以必须要Spring4. 我用Spring boot,所以引入 <dependency><groupId>org.sprin ...
- @valid 校验_一文带你快速入手 Spring Boot 参数校验
点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 作者:狂乱的贵公子 来源: ...
- Springboot @Validated参数校验
简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现.hibernate validation是对这个规范的实现,并增加了校验注解如@Em ...
最新文章
- Java项目:在线高中考试系统(java+SSM+Jsp+Mysql+Maven)
- String与Date转换
- 计算机在超声的应用,计算机在医学超声成像中应用.pdf
- JENKINS使用DOCKER运行PYTEST并且出ALLURE报告
- 使用SQL命令行更改数据库字段类型
- iPhone 13 Pro手机壳曝光 网友:更丑了
- opencv-api minAreaRect
- 苹果终端date命令_苹果M1 Mac电脑关闭SIP方法
- matlab如何获得数组有多少数,请问MATLAB里有得到一个数组中相同数有多少个的函数么?...
- v-distpicker
- LTE-5G学习笔记17--COMP技术讲解
- Vue nvm重装node和npm与vue3报错Emitted ‘error‘ event on ChildProcess instance at errno: -4058
- jQuery里面的选择属性和修改属性
- python数字转大写字母_python变量名称如何转化为大写字母?
- android 录制手机视频与生成gif图片
- 云启资本陈昱:开源软件公司市场估值已超平均市值 20 倍
- python怎么网络通信_python入门第二十六天--网络通信
- 使用ESP8266(基于官方SDK)接入阿里云物联网平台
- Python人体肤色检测
- Ulead GIF Animator
热门文章
- 镜头那么多,到底要哪一个?盘点向「多目怪」挺进的智能手机
- x86-64CPU寄存器介绍
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
- Linux新建文件夹、删除文件命令
- CorelDRAWX4的VBA插件开发(三十五)调用C++实现一键智能群组(第4节)递归调用框选工具
- python 变化检测使用EM算法求解差异图像最优灰度阈值问题实现
- cs python课程 加州大学_【北美名校CS课程整理系列】6. 强化学习与决策控制
- 用友软件T3出纳通提示单据锁定
- 三部门发文,ETC“指标压身”,发卡机构如何用交通大数据守住风控“命门”?
- 紫光同创国产FPGA学习之了解器件和软件