@RequestMapping(value = "/save", method = RequestMethod.POST)
@ResponseBody
public List<SaveVideo> saveVideo(@Validated @RequestBody List<SaveVideo> video, BindingResult bindingResult) {// 省略业务代码
}

body的参数:

[{“sysNo”:“HIKID098”,“videoType”:“01”,“videoName":"高清小视频"},{...}]

public class SaveVideo{private static final long serialVersionUID = 1L;@NotBlank(message = "系统编号不能为空")private String sysNo;@NotBlank(message = "影像类型不能为空")private String videoType;@NotBlank(message = "影像名称不能为空")private String videoName;}

自定义一个ValidList<E>实现List<E>,并在成员属性上添加@Valid注解,这样就可以校验list里得对象的属性


/*** FileName: ValidList* DESCRIPTION: 参数校验工具类, 用于校验List<E> 类型的请求参数*/
public class ValidList<E> implements List<E> {@Validprivate List<E> list = new ArrayList<>();@Overridepublic int size() {return list.size();}@Overridepublic boolean isEmpty() {return list.isEmpty();}@Overridepublic boolean contains(Object o) {return list.contains(o);}@Overridepublic Iterator<E> iterator() {return list.iterator();}@Overridepublic Object[] toArray() {return list.toArray();}@Overridepublic <T> T[] toArray(T[] a) {return list.toArray(a);}@Overridepublic boolean add(E e) {return list.add(e);}@Overridepublic boolean remove(Object o) {return list.remove(o);}@Overridepublic boolean containsAll(Collection<?> c) {return list.containsAll(c);}@Overridepublic boolean addAll(Collection<? extends E> c) {return list.addAll(c);}@Overridepublic boolean addAll(int index, Collection<? extends E> c) {return list.addAll(index, c);}@Overridepublic boolean removeAll(Collection<?> c) {return list.removeAll(c);}@Overridepublic boolean retainAll(Collection<?> c) {return list.retainAll(c);}@Overridepublic void clear() {list.clear();}@Overridepublic E get(int index) {return list.get(index);}@Overridepublic E set(int index, E element) {return list.set(index, element);}@Overridepublic void add(int index, E element) {list.add(index, element);}@Overridepublic E remove(int index) {return list.remove(index);}@Overridepublic int indexOf(Object o) {return list.indexOf(o);}@Overridepublic int lastIndexOf(Object o) {return list.lastIndexOf(o);}@Overridepublic ListIterator<E> listIterator() {return list.listIterator();}@Overridepublic ListIterator<E> listIterator(int index) {return list.listIterator(index);}@Overridepublic List<E> subList(int fromIndex, int toIndex) {return list.subList(fromIndex, toIndex);}public List<E> getList() {return list;}public void setList(List<E> list) {this.list = list;}
}

最后修改控制器:使用自定义的validList去接收参数即可。

@RequestMapping(value = "/save", method = RequestMethod.POST)
@ResponseBody
public List<SaveVideo> saveVideo(@Validated @RequestBody ValidList<SaveVideo> video, BindingResult bindingResult) {// 省略业务代码
}

方法二:使用@validated注解即可

@Validated
@ApplySecurity
@RequestMapping("/swindle")
public class SwindleInfoController {@PostMapping("/persons")@AuthorityCode(values = AuthorityCodeConstants.GET_RISK_PERSON)@ApiResponses({@ApiResponse(code = 200, message = "获取成功"),@ApiResponse(code = 400, message = "请求参数不合法", response = ErrorResponse.class),@ApiResponse(code = 500, message = "系统异常", response = ErrorResponse.class)})@RequestLog(transCode = RISK_PERSON, procInfo = "'swindlePersonRequests=' + #swindlePersonRequests")@ApiOperation(value = "申请涉案人员核查", httpMethod = "POST")public SwindlePersonResponse getSwindlePersons(@Valid @RequestBody List<SwindlePersonRequest> swindlePersonRequests) {return swindleInfoService.getSwindlePerson(swindlePersonRequests);}}@Getter
@Setter
@Validated
@ToString
@ApiModel(value = "SwindlePersonRequest", description = "涉案人员查询体(集合最长长度支持10)")
public class SwindlePersonRequest {@ApiModelProperty(value = "自然人名称",name = "name",example = "武夷三")@Length(max = 200, message = "自然人名称长度不能超过200")@NotBlank(message = "自然人名称不能为空")private String name;@ApiModelProperty(value = "证件号码",name = "certificateNo",example = "91440300100016860X")@NotBlank(message = "证件号码不能为空")private String certificateNo;@ApiModelProperty(value = "证件类型不能为空",name = "certificateType",example = "P01")@NotBlank(message = "证件类型不能为空")private String certificateType;}

Post请求body为list,校验里面的对象相关推荐

  1. Webflux Controller请求Json的数据校验

    开一篇博客,纪念我逝去的两个小时. Spring对请求数据Json的校验,有两个方法.先说第一个坑@JsonProperty.requried() @JsonProperty.required 官方说 ...

  2. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  3. 如何调用天气接口(如何解决WebService客户端引用 服务器无法处理请求。 未将对象引用设置到对象的实例)

    正常操作是: 添加服务引用 输入UPL地址,更改命名空间 确定 然后在cs文件里面引用WebServer所在的命名空间,实例化类,就可以调用其中方法 调用getWeather()方法的时候会报 服务器 ...

  4. Jquery中实现表单提交到SSM后台前进行post请求实现数据的校验

    场景 表单中有两个输入框input在提交这个表单前需要对两个输入框进行校验. 即点击提交按钮时会经过校验的方法,此方法会post方式提交到后台,在请求后台成功后的回调方法中会对js变量进行赋值,进而决 ...

  5. Spring Boot 拦截器 请求参数MD5签名校验

    拦截器定义 /*** 拦截器 请求参数签名校验* Created by jiyang on 14:47 2017/12/14*/ @Component @Slf4j public class Para ...

  6. vue同步请求 + vant表单校验

    Vue同步请求 1. Vue同步请求 2. Vant2 表单校验 2.1 全局校验 2.1 自定义函数校验 1. Vue同步请求 async getIsoPersonInfo(id){await is ...

  7. 校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)

    背景: 开发中经常遇到取值属性的时候,需要校验数值的有效性. 例如: 获取props对象里面的friends属性 props.user && props.user.friends &a ...

  8. MDL--元数据锁的锁请求与锁等待+元数据锁类对象

    1 元数据锁的锁请求与锁等待 元数据锁在MySQL Server层,依照锁的状态被细分为两种.一种是已经施加的锁.一种是等待施加的锁即锁请求,这样被区分的原因,如MySQL对"class M ...

  9. vue中请求到的数据赋值给data 对象

    在写vue的项目时,用axios请求到的数据,直接赋值给data对象,当修改data对象里面的数据,请求到的数据也会改变. _this.detailData是data对象里面的数据,response. ...

最新文章

  1. MySqli操作数据库
  2. 是第一个成功设计微型计算机的人,()是第一个成功设计微型计算机的人。
  3. 【opencv4】opencv教程 C++ 4、Mat对象(深拷贝:clone()、copyTo(),create()创建图片,zeros()、eye()初始化空白图像,Scalar()创建向量)
  4. 【spring-boot】restfull api 返回值中,去掉 null 值
  5. 三年经验前端社招——朴朴科技
  6. python uuid
  7. 可以发送html文本的python脚本
  8. Matlab趋势线公式引用,批量提取excel中图表趋势线的公式中的斜率 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  9. 亲测有效,推荐4款好用的录屏软件
  10. C++算法之-小球问题
  11. 用cocos实现的《我的世界》已经上线微信小游戏,分享一下主要技术
  12. 使用赫夫曼编码进行解码
  13. 电力电子技术总结-电力电子器件2
  14. 计算机开机没反应怎么办,电脑开机没反应怎么办 开机没反应解决方法推荐
  15. Github:this exceeds GitHub‘s file size limit of 100.00 MB
  16. matlab负无穷大到正无穷大怎么打,matlab中怎么定义n从负无穷到正无?
  17. IT风云15年的那些人、那些事(一)
  18. ssm后台管理系统-04
  19. 前端:transition结合transform实现变形的平滑过渡效果
  20. scrapy源码分析(六)---------------CrawlProcess

热门文章

  1. 华为手机自带邮箱如何添加新浪邮箱账号
  2. 软件测试方法的分类及工具推荐
  3. java韩顺平学习笔记
  4. MATLAB基本的使用方法
  5. 公有iot私有iot架构_玩洋葱Omega IoT设备在OLED屏幕上显示实时血糖
  6. 第07篇 部署区块链浏览器(2)
  7. 固态硬盘使用的优化——适用于任何版本的固态
  8. 王牌英雄(Awesomenauts)研究报告
  9. PTA ## 统计字符
  10. 同花顺l2数据接口到底有什么用?