SpringBoot注解验证参数
注解 | 作用类型 | 解释 |
@NotNull | 任何类型 | 属性不能为null |
@NotEmpty | 集合 | 集合不能为null,且size大于0 |
@NotBlanck | 字符串、字符 | 字符类不能为null,且去掉空格之后长度大于0 |
@AssertTrue | Boolean、boolean | 布尔属性必须是true |
@Min | 数字类型(原子和包装) | 限定数字的最小值(整型) |
@Max | 同@Min | 限定数字的最大值(整型) |
@DecimalMin | 同@Min | 限定数字的最小值(字符串,可以是小数) |
@DecimalMax | 同@Min | 限定数字的最大值(字符串,可以是小数) |
@Range | 数字类型(原子和包装) | 限定数字范围(长整型) |
@Length | 字符串 | 限定字符串长度 |
@Size | 集合 | 限定集合大小 |
@Past | 时间、日期 | 必须是一个过去的时间或日期 |
@Future | 时期、时间 | 必须是一个未来的时间或日期 |
字符串 | 必须是一个邮箱格式 | |
@Pattern | 字符串、字符 | 正则匹配字符串 |
以上注解用到要验证参数的封装类中的属性上:
public class Test {@NotNull(message = "ID不能为空")@Range(min = 1, max = 100, message = "ID必须在1到100之间")private Integer id;@NotBlank(message = "姓名不能为空")@Length(min = 2, max = 6, message = "姓名必须在2到6位之间")private String name;@NotNull(message = "余额不能为空")@DecimalMax(value = "30.50", message = "余额不能超过30.5")@DecimalMin(value = "1.50", message = "余额不能低于1.5")private BigDecimal amount;@NotNull(message = "生日不能为空")@Past(message = "生日必须是过去")private Date birthday;@NotBlank(message = "邮箱不能为空")@Email(message = "邮箱格式不正确")private String email;@NotBlank(message = "手机号不能为空")@Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "手机号格式错误")private String phone;}
然后在controller的每个接口中使用@Validated和BindingResult类
@Validated注解用于验证一个入参,验证之后的消息绑定到BindingResult类中:
@PostMapping("/test")@ApiOperation(value = "测试", notes = "", response = Result.class)public Result test(@ApiParam(name = "test", value = "参数", required = true) @Validated @RequestBody Test test, BindingResult bindingResult) {if(bindingResult.hasErrors()){String errorMsg = bindingResult.getFieldError().getDefaultMessage();return Result.error(errorMsg);}return Result.ok("参数验证通过");}
SpringBoot注解验证参数相关推荐
- SpringBoot @Validated注解实现参数校验
1. 前言 做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的.如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量 ...
- hibernate.validator验证参数
前言 在接口开发中,经常是需要对传入参数完整性进行验证的,或者对手机号格式进行验证等,而一般不了解@Valid注解之前,都是通过自己封装方法来验证,都是一堆if else集合,这样判断对于代码结构很不 ...
- SpringBoot 实现统一参数校验
一.业务需求 与第三方平台对接,第三方调用接口实现数据上报.由于接口传参较多,要对每一个参数做校验,如果写工具类对每个参数校验会很麻烦,因为,使用springboot自带的校验功能实现对参数的统一校验 ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例
前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...
- Springboot优雅的参数校验(一)
目录 前言 1. 依赖引入 2. 参数形式 3. 常用到的约束注解 4. 参数基础校验 4.1 @RequestBody参数 4.2 @RequestParam参数/@PathVariable参数 4 ...
- SpringBoot注解详解
一.简介 基于 SpringBoot 平台开发的项目数不胜数,与常规的基于Spring开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速开发,而且非常简单,基本可以做到开箱即 ...
- 十、springboot注解式AOP(@Aspect)统一日志管理
springboot注解式AOP(@Aspect)统一日志管理 简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功 ...
- spring注解式参数校验
转载自 https://blog.csdn.net/jinzhencs/article/details/51682830 一般入参我们都会转为vo对象.那么直接在对象的属性上注解即可. 其实spri ...
最新文章
- idea 报错javax/xml/bind/DatatypeConverter
- python分类预测_python做logistic分类预测尝试
- 【Azure Show】|第三期 人工智能大咖与您分享!嘉宾陈海平胡浩陈堰平
- SDI高清视频光端机特点有哪些?
- g++和gcc的区别
- 自定义格式字符串随笔(IFormattable,IFormatProvider,ICustomFormatter三接口的实现)
- Mac下使用gitHub
- 防止屏蔽,背投广告代码的完善
- 12 年15省赛区大学生电子设计-微弱信号检测装置
- 史上最全的点线面距离公式与推导过程(图文介绍)
- chrome 切换标签页快捷键_chrome浏览页面常用快捷键
- layui 模板引擎-laytpl(局部渲染)
- NNNNNNNNNN
- 将titles_test表名修改为titles_2017
- 树莓派CSI摄像头使用
- python爬取饿了么评论_python爬取饿了么的实例
- 以Edge浏览器为例演示清除浏览器的缓存
- 基于麦克风阵列的声源定位算法之GCC-PHAT
- Python常见的魔方方法
- 如何写好技术文档——来自Google十多年的文档经验
热门文章
- Leetcode每日一题:42.trapping-rain-water(接雨水)
- 区块链和数据科学:如果同时应用这两种技术,将会实现什么?
- UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)...
- java statement 动态参数_java_web学习(九) PreparedStatement动态参数的引入
- 快速了解Spring Cloud
- Teamcenter 入门开发系列问答(1)
- libiconv字符集转换库使用方法
- bae java乱码_BAE json 返回乱码。
- c语言指针选择排序1,求助利用指针进行选择排序
- kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错