@Validated规则校验和校验分组Group
后台校验有很多的工具,最开始用的是@Valid,这个是比较简单的,不支持分组校验。
Spring用@Validated对@Valid进行了封装,这样就满足了分组校验。
其实就是增加了一个group来对校验规则进行分组,然后再@Validated中指定group来校验。
- 分组
@Data
public class UserModel {@NotNull(message = "{id.empty}", groups = { FirstGroup.class })private int id;@NotNull(message = "{username.empty}", groups = { FirstGroup.class, SecondGroup.class })private String username;@NotNull(message = "{content.empty}", groups = { FirstGroup.class, SecondGroup.class })private String content;}
// 分组1
public interface FirstGroup {}
// 分组2
public interface SecondGroup{}// 通过Group对校验进行分组
@RequestMapping(value = "/save.action", method = RequestMethod.POST)
public String save(@Validated( { SecondGroup.class }) UserModel userModel, BindingResult result) {if (result.hasErrors()) {return "validate/error";}return "redirect:/success";
}@RequestMapping(value = "/update.action", method = RequestMethod.POST)
public String update(@Validated( { FirstGroup .class, SecondGroup.class }) UserModel user, BindingResult result) {if (result.hasErrors()) {return "validate/error";}return "redirect:/success";
}
有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存的时候是不需要的,对于更新时是必须的,可以如下配置:
- 分组
默认情况下,不同组别的约束验证是无序的,然而在某些情况下,约束验证的顺序却很重要,如下面两个例子:(1)第二个组中的约束验证依赖于一个稳定状态来运行,而这个稳定状态是由第一个组来进行验证的。(2)某个组的验证比较耗时,CPU 和内存的使用率相对比较大,最优的选择是将其放在最后进行验证。因此,在进行组验证的时候尚需提供一种有序的验证方式,这就提出了组序列的概念。
一个组可以定义为其他组的序列,使用它进行验证的时候必须符合该序列规定的顺序。在使用组序列验证的时候,如果序列前边的组验证失败,则后面的组将不再给予验证。
下例中声明了组 GroupA.class,GroupB.class 和 Group.class,其中 default,GroupA,GroupB 均为 Group 的序列。
// 分组都是接口
@GroupSequence( { Default.class, GroupA.class, GroupB.class })
public interface Group {}public interface GroupA {}public interface GroupB {}
通过 groups 对验证进行分组
// 校验实体类对象属性不为空
public class User {@NotEmpty(message = "firstname can't be empty")private String firstname;@NotEmpty(message = "middlename can't be empty", groups = Default.class)private String middlename;@NotEmpty(message = "lastname can't be empty", groups = GroupA.class)private String lastname;@NotEmpty(message = "country can't be empty", groups = GroupB.class)private String country;
}@RequestMapping(value = "/update.action", method = RequestMethod.POST)
public String register(@Validated(Group.class) User user, BindingResult result) {if (result.hasErrors()) {return "校验失败";}return "校验成功";
}
@Validated规则校验和校验分组Group相关推荐
- java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例
前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...
- element form自定义校验_SpringBoot分组校验及自定义校验注解
前言 在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性.在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法.而这篇则是 ...
- Validated数据校验,看这一篇就够了
目录 1 介绍 1.1 什么是数据校验 1.2 Java提供的数据校验工具 1.3 @Validated和@Valid的区别 1.4 依赖导入 1.5 常用数据校验注解 2 使用 2.1 校验实体类 ...
- Springboot @Validated参数校验
简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现.hibernate validation是对这个规范的实现,并增加了校验注解如@Em ...
- 【SQL】分组数据,过滤分组-group by , having
学习笔记,原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP ...
- @Validated数据校验
@Validated数据校验 前言 为了减少代码进行对数据进行校验,利用@Validated来进行注解形式的数据校验 创建实体类 @Data @FieldDefaults(level = Access ...
- @Validated嵌套校验
后台开发校验参数是非常重要的,使用Validated我们可以方便快捷完成参数校验,记录下Validated如何嵌套校验参数 校验List数据,必须要使用@Valid,不能使用@Validated,@V ...
- R语言ggplot2可视化、不同分组使用不同的色彩、同一分组(group)的线条使用相同的色彩但是配置使用不同的线型(line type)
R语言ggplot2可视化.不同分组使用不同的色彩.同一分组(group)的线条使用相同的色彩但是配置使用不同的线型(line type) 目录
- mysql分组取日期最大的记录_mysql 分组 group by, 排序 取每条记录中,时间最大
mysql教程 分组 group by, 排序 取每条记录中,时间最大的一条记录 select a.* from test a, (select aid, max(day) max_day from ...
最新文章
- Python基本语法_异常处理详解
- python中格式化_Python中格式化的两种方法
- linux给oracle导入sql语句,Linux数据库创建与数据导入
- 笔记本电脑频繁自动重启_笔记本电脑自动重启是什么原因
- 了解OAuth2令牌认证
- 不重启修改计算机名称,批处理不重启快速修改计算机名
- 【Kafka】Illegal unquoted character ((CTRL-CHAR, code 0)): has to be escaped using backs
- 安卓开发之开启子线程以及安卓的消息机制原理
- Linux中nginx安装基础教程
- Tableau可视化学习笔记:day01-02
- 练习--LINUX进程间通信之有名管理FIFO
- 最新30套Java项目实战
- 在SOUI里使用真窗口时使用SOUI的滚动条
- 项目报错-Some file crunching failed, see logs for details
- PushMall推贴共享电商十二月更新计划
- GC 的背景和一般原理--什么是GC,minor gc,major gc,full gc
- Discuz模板制作教程
- java怎么做3d可视化图形
- 关于SaaS平台中应对多租户模式的设计
- 使用CKRule实现PVC配方计算