JSR303(Bean的校验框架)的注解,在 controller 的方法中验证时(运行时校验属性)使用,如果不合法(校验失败),注解中的提示信息会保存在 result 中。

JSR提供的校验注解:

javax.validation.constraints

注解 校验内容
@Null 为 null
@NotNull 不为 null,可以为空字符串
@AssertTrue 为 true
@AssertFalse 为 false
@Min(value) 数字,最小值 value
@Max(value) 数字,最大值 value
@DecimalMin(value) 数字,最小值 value
@DecimalMax(value) 数字,最大值 value
@Size (max=, min=) 集合,长度范围 min ~ max
@Digits(integer, fraction) 数字,在 integer 上下浮动不超过 fraction
@Past 过去的日期
@Futrue 将来的日期
@Pattern(regex=, flag=) 符合正则表达式
Hibernate Validator 提供的校验注解:

org.hibernate.validator.constraints

注解 校验内容
@NotBlank(message=) 字符串,非 null,且 trim() 后长度大于0
@NotEmpty 集合,非空
@Email 电子邮箱地址
@Length(min=, max=) 字符串,长度范围 min ~ max
@Range(min=, max=, message=) 指定范围 min ~ max

使用 Validate 分组校验

依赖引入。
pom.xml

<!--jsr 303-->
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version>
</dependency>
<!--hibernate validator-->
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.0.Final</version>
</dependency>

对校验的属性进行设置和分组。使用了 Validate 提供的校验注解的属性,默认的校验分组是 Default.class。
pojo


import lombok.Data;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.groups.Default;@Data
public class UserVo {// 默认分组是 Default.class。/*** 用户新增校验分组(用于新增用户时校验的分组)*/public interface AddUser extends Default{}/*** 用户更新校验分组(用于更新用户时校验的分组)*/public interface UpdateUser extends Default{}@NotNull(message = "用户id不能为空", group = {Add.class, Update.class})private Long id;@NotBlank(message = "用户姓名不能为空", group = {Update.class})private String name;@NotBlank(message = "用户姓名不能为空", group = {Delete.class})private String tel;@DateTimeFormat(pattern = "yyyy-MM-dd")@Future(message = "只能是将来的日期")private Date date;@DecimalMax(value = "10000.0"")@DecimalMin(value = "1.0"")private Double doubleValue = null;@Max(value = 100, message = "最大值")@Min(value = 1, message = "最小值")private Integer integer;@Range(min = 1, max = 100, message = "范围")private Long range;@Email(message = "邮箱格式错误")private String email;@Size(min = 2, max = 10, message = "字符串长度在2~10")private String size;}

controller 方法的参数加上 @Validate 注解后,该方法接收参数时自动对 pojo 中带有验证注解的属性进行相应的校验。不满足验证条件时,进行拦截并返回 message= 定义的信息。
controller

@RestController
@RequestMapping("/validate")
public class TestController {/*** 用户登录* 使用默认分组Default.class进行校验*/@RequestMapping("/login")@ResponseBodypublic R add(@RequestBody @Validate UserVo userVo) {return R.ok("ok");}/*** 新增用户* 使用一个自建分组Add.class就行校验*/@RequestMapping("/add")@ResponseBodypublic R add(@RequestBody @Validate(UserVo.Add.class) UserVo userVo) {return R.ok("ok");}/*** 更新用户* 使用一个自建分组Update.class进行校验*/@RequestMapping("/update")@ResponseBodypublic R update(@RequestBody @Validate(UserVo.Update.class) UserVo userVo) {return R.ok("ok");}/*** 删除用户* 使用多个自建分组Add.class,Delete.class进行校验*/@RequestMapping("/delete")@ResponseBodypublic R delete(@RequestBody @Validate(Add.class, Delete.class, Default.class) UserVo userVo) {return R.ok("ok");}
}

@Validate 默认校验默认分组 Default.class,校验时可指定多个分组,使用自定义分组时默认分组的校验不在该校验范围内,可添加 Default.class。

validation 分组校验注解大全及使用详解相关推荐

  1. Spring注解大全(示例详解)

    Controller 标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象. @Controller public class TestController ...

  2. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  3. java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]

    本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...

  4. 我的世界服务器ess配置信息,我的世界ess指令大全及用法详解

    我的世界ess指令大全及用法详解告诉你<我的世界>是一款风靡全球的沙盒游戏,其中哟很多的指令可以帮助玩家更好的游戏.ess指令在ess插件运行中十分重要的一部分,但是很多新手玩家在刚开始接 ...

  5. 我的世界ess服务器信息,我的世界ess指令怎么用 ess指令大全及用法详解

    我的世界ess指令都有哪些?作为风靡全球的沙盒游戏,我的世界带给玩家太多的乐趣.为了能更方便的游戏,ess指令能帮助我们更好的游戏.很多新手玩家刚接触就被搞晕了,这么多的指令看起来有些复杂.下面就由小 ...

  6. 我的世界服务器ess配置文件,《我的世界》ess指令大全及用法详解

    我的世界是一款风靡全球的沙盒游戏,其中哟很多的指令可以帮助玩家更好的游戏.ess指令在ess插件运行中十分重要的一部分,但是很多新手玩家在刚开始接触的时候都不是太了解,下面安卓游戏小编就为大家带来我的 ...

  7. 一对一关联查询注解@OneToOne的实例详解(一)

    转载自: https://www.cnblogs.com/boywwj/p/8092915.html 一对一关联查询注解@OneToOne的实例详解 表的关联查询比较复杂,应用的场景很多,本文根据自己 ...

  8. 我的世界ess服务器信息,我的世界ess指令大全及用法详解

    我的世界是一款高人气的沙盒游戏,其中哟很多的指令可以帮助玩家更好的游戏,ess指令在ess插件运行中十分重要的一部分,下面介绍我的世界ess指令大全及ess指令的使用方法.一起来看看吧. 我的世界es ...

  9. java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)

    @jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...

最新文章

  1. 资料分享:送你一本《BigONE Developer API V2》电子书!
  2. Postfix配置文档
  3. Java调用jar包测试
  4. spring boot中使用@Async失效
  5. 下一代Asp.net开发规范OWIN(3)—— Middleware
  6. Redis sorted set 类型操作及常用命令
  7. tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
  8. python运维都做些什么,Python运维工程师主要做什么?岗位职责!
  9. 国考省考行测:言语理解与表达,主旨理解,结构分析法,总分结构
  10. 【免费】搜狗站长URL自动推送工具1.4.1
  11. Word 安全模式可以启动,正常模式不能启动
  12. Leecode DFS深度优先搜索
  13. Python调用腾讯优图OCR通用API实现文字识别
  14. 做计算机实验报告的总结,制作网线实验报告与总结
  15. 啊啊啊啊啊啊啊啊啊啊啊啊啊啊(一篇自述)
  16. 洛谷B2079 求出 e 的值(阶乘)
  17. matlab仿真环境运行,ADMIRE 飞行仿真模型,Matlab环境中运行,可实现快速 ,性能分析 274万源代码下载- www.pudn.com...
  18. 联芯 1860平台 icn6211 mipi to RGB 转换芯片 调试 和 st7789 LCD调试spi 9bit 模式
  19. GitHub协作开发项目
  20. 【与丁中文老师的交流】

热门文章

  1. 码分多址(CDMA),码片序列简单理解
  2. vue+element-ui调用后台接口实现excel在线预览
  3. 【AD系列教程】在PCB中加入任意图形
  4. MATLAB——Harris角点检测
  5. JSP程序设计——手机销售网后台设计
  6. bboss redis组件使用实例
  7. Android键盘自定义表情包,关于自定义表情键盘...
  8. 所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?
  9. 虚拟机的桥接模式和NAT模式
  10. “守法规知礼让、安全文明出行”背后需要良好的交通环境支撑 | 聚焦守法知礼...