SpringBoot整合表单验证注解@Validated,以及分组验证
首先引入jar包
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
表单注解验证一般可以用来 验证用户名不能为空,邮箱格式不正确,手机号应为11位 ,但是在验证一部分字段的时候要用到分组的功能
创建一个包 名字为group包,创建两个接口类

类里不用写内容
添加字段的注解验证
@TableName("user")
@GroupSequence({Insert.class,Update.class,User.class})
public class User extends Model<User> implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
@NotEmpty(groups={Insert.class,Update.class},message = "用户名不能为空")
@Size(groups={Insert.class,Update.class},min = 5,max = 16 ,message = "用户名要求5-16位")
private String uName;
@NotEmpty(groups={Insert.class},message = "密码不能为空")
private String uPwd;
@NotEmpty(groups={Insert.class,Update.class},message = "邮箱不能为空")
@Email(groups={Insert.class,Update.class},message = "邮箱格式不对")
private String uEmail;
@NotEmpty(groups={Insert.class,Update.class},message = "手机号不能为空")
@Size(groups={Insert.class,Update.class},min = 11,max = 11 ,message = "手机号为11位有效手机号")
private String uTel;
@NotEmpty(groups={Insert.class,Update.class},message = "角色不能为空")
private String uRank;
验证前端传来的数据
@PostMapping(value = "/registerinfo")
@ResponseBody
public Msg register(@RequestBody @Validated({ Insert.class }) User user, BindingResult bindingResult) {
//获取验证注解信息
if (bindingResult.hasErrors()) {
return Msg.failure(bindingResult.getFieldError().getDefaultMessage());
} else { return "验证正确";
} }
例如以上为user表的注解验证
@NotEmpty 不能为空 @Size 设置长度 @Emaile 设置邮箱格式 更多的注解可以页面最后查询
@GroupSequence({Insert.class,Update.class,User.class}) //引入两个接口类
@NotEmpty(groups={Insert.class},message = "密码不能为空") //设置在 @Validated({ Insert.class }) 的时候只验证密码, 如果@Validated({ Update.class })的时候,密码就不验证了
@NotEmpty(groups={Insert.class,Update.class},message = "用户名不能为空") //在设置 @Validated({ Insert.class })或者 @Validated({ Update.class })的时候可以验证用户名
|
验证注解 |
验证的数据类型 |
说明 |
|
@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要求一样 |
验证注解的元素值的整数位数和小数位数上限 |
|
@Si***=下限, 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注解即可级联验证 |
SpringBoot整合表单验证注解@Validated,以及分组验证的更多相关文章
- spring boot学习(7) SpringBoot 之表单验证
第一节:SpringBoot 之表单验证@Valid 是spring-data-jpa的功能: 下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁. 贴下代码吧: Student实体: ...
- 利用JS提交表单的几种方法和验证(必看篇)
第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...
- (办公)springboot配置表单验证@Valid
项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置.最近springboot用的还是蛮多的,我还是做事情,把经验发表一下. SpringBoot提 ...
- SpringBoot之表单验证@Valid
转自:https://www.cnblogs.com/chenlove/p/8708627.html SpringBoot提供了强大的表单验证功能实现,给我们省去了写验证的麻烦: 这里我们给下实例,提 ...
- SpringBoot整合Mybatis【非注解版】
接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 选择Spring Initializr,配置JDK版本 输入项目名 选择构建web项目所需的state ...
- 利用JS提交表单的几种方法和验证
第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 <script type="text/javascript"> function ...
- anular2 表单包含多个组件并验证提交
angular2表单最常用的方法就是在input或者textarea里直接添加formControlName或者formControlGroup进行数据双向绑定并验证. <form [formG ...
- Javascript高级编程学习笔记(78)—— 表单(6)HTML约束验证API
自动切换焦点 使用JS可以极大地提升表单的易用性 其中最常用的一种就是当用户填写完当前字段后焦点自动切换到下一个字段 以下方的HTML代码为例: <input type="text&q ...
- ant-design表单处理和常用方法及自定义验证
首先要说一下antdesign这个框架API和demo丰富,而且开发环境提供对应的warning来纠正用户的错误.是一个很好的组件库. 关于表单验证方面是依赖于 async-validator 库. ...
随机推荐
- 1、VMware安装步骤
最后重启电脑
- 对vi/vim的一些看法
早在网上看到别人如何把vi吹得神乎其神了,决定试着用一下.不过还是发现太麻烦了,因为我是在windows系统下面的,网络的原因无法使用linux系统(无校园电信客户端). 首先vim只是一个文本编辑器 ...
- WPF DevExpress Chart控件 界面绑定数据源,不通过C#代码进行绑定
<Grid x:Name="myGrid" Loaded="Grid_Loaded" DataContext="{Binding PartOne ...
- 【漏洞学习】HOST 头攻击漏洞
日期:2018-03-06 14:32:51 作者:Bay0net 0x01. 前言 在一般情况下,几个网站可能会放在同一个服务器上,或者几个 web 系统共享一个服务器,host 头来指定应该由哪个 ...
- RESR API (二)之Responses
Responses 与基本的HttpResponse对象不同,TemplateResponse对象保留 the details of the context that was provided by ...
- CSS3—— 2D转换 3D转换 过渡 动画
2D转换 对元素进行移动.缩放.转动.拉长或拉伸 ————> ————> 移动 顺时针旋转 扩大/缩小 倾斜 2D变换合并 3D转换 绕x轴 绕y轴 过渡 从一种样式逐渐改变为另一 ...
- LeetCode链表简单题
一.21合并两个有序链表 代码如下: class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNod ...
- java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/spark/internal/Logging;)V
1.sparkML的版本不对应 请参考官网找到对于版本, 比如我的 spark2.3.3 spark MLlib 也是2.3.3
- Java基础/Socket.io双向通信
Socket.io基础知识(一) (一).socket.io提供了基于事件的实时双向通讯 Web端与服务端实时数据传输方式: 1.Ajax轮询方式(最早应用) 原理:设置定时器,定时通过Ajax同 ...
- .net core 学习小结之 JWT 认证授权
新增配置文件 { "Logging": { "IncludeScopes": false, "Debug": { "LogLeve ...