场景描述

controller.java

public CommonResponse<Boolean> save(@Valid @RequestBody List<CatalogDto> catalogDtos)

CatalogDto.java

问题描述:

@NotEmpty和@NotBlank在请求进入的时候并没有生效,虽然我在controller的方法内加入了@Valid或@Validator注解。

问题分析

直接对List集合进行校验的行为和对自定的DTO校验的行为其实是有区别的,区别在于自定义的DTO是被作为一个整体对象校验(可以理解为一个入口),对象里的每一个字段都会被按照标记的注解进行校验。但是将List作为一个整体对象的时候,其内部是没有任何校验注解的,因为java源码中本身就没有添加校验相关的注解。这个时候@Valid和@NotEmpty都想把personList作为一个字段来校验,但是MVC不支持这种模式,所以未生效。

解决方案

封装,将接口需要校验的参数封装为一个DTO,然后再校验。
controller.java

vo.java

SpringMVC List<T> @NotEmpty @NotNull 入参校验未生效相关推荐

  1. Java开发中业务层入参校验详细解析

    2019独角兽企业重金招聘Python工程师标准>>> 背景 首先,我们达成以下共识: 一个服务方法,如果入参太多,且基本为非pojo,会给调用方造成不必要的干扰.尽管可以把文档写的 ...

  2. NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!

    前言 管道这个词,若是有玩过Linux的小伙伴肯定知晓,比如(看图): 意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的~ 在nest里面的管道,主要是用来做入参数据类型的 ...

  3. SpringBoot 入参校验

    这里写目录标题 一.添加依赖 二.验证 1.校验参数 2.自定义捕获异常 3.验证请求体 4.postman测试 三.自定义Validator 四.总结 1.注解 2.注意 3.拓展 一.添加依赖 基 ...

  4. java 入参校验_java开发参入参数校验

    一:字段少的校验用法 Assert.notNull(payable, "Payable不能为空!"); Assert.notNull(payable.getNettingStatu ...

  5. java 入参校验_Java Validation方法入参校验实现过程解析

    一.前言 在日常的开发中,经常需要对方法参数进行校验(非空.长度等).如果采用hardcode去校验(if..else..),会造成代码冗余,复用性低,导致维护成本比较高.借助Validation组件 ...

  6. SpringBoot2 参数管理实践,入参出参与校验

    一.参数管理 在编程系统中,为了能写出良好的代码,会根据是各种设计模式.原则.约束等去规范代码,从而提高代码的可读性.复用性.可修改,实际上个人觉得,如果写出的代码很好,即别人修改也无法破坏原作者的思 ...

  7. 手动用hibernate-validator校验入参

    所需jar包: hibernate-validator-4.1.0.Final.jar  validation-api-1.0.0.GA.jar 因为用的是简单的spring mvc框架,入参是复杂的 ...

  8. spring入参为指定值,校验java入参的值为规定的值,利用Validator指定值校验注解——一看就会

    我们在使用spring项目的时候,经常使用@Valid来对入参进行校验,比如必须为空,必须不为空,长度多少,是否符合邮件格式等等,同时也可以正则. 如下图所示, @Null(message = &qu ...

  9. SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例

    SpringMVC自动将请求参数和入参对象的属性进行一一绑定:要求请求参数的名字和javaBean入参的对象里面的属性名是一样的 1.SpringMVC中配置HiddenHttpMethodFilte ...

最新文章

  1. scrapy配置文件操作核心API解读
  2. FD.io/VPP — VPP Agent — Quickstart
  3. 服务器设备日常维护与管理论文,浅谈设备管理与维护论文
  4. tomcat上传文件到不同服务器,使用SpringMVC进行跨服务器上传文件出现的那些坑
  5. Google 的 C++ 代码规范
  6. 面试了一个2年程序员,竟然只会curd,网友神回复!
  7. istanbul —— JavaScript 代码覆盖率检查工具
  8. android微信条码支付接口,Android中调用微信支付接口
  9. opencv 图像读写显示、matplotlib 库图像读写显示
  10. Android 6.0动态权限(转)
  11. 如何用c语言编写控制台小游戏,使用c语言写WIN32控制台小游戏 贪吃蛇
  12. Ubuntu20.04 libcef笔记
  13. linux网页版控制台,linux Web控制台
  14. Java识别验证码和图像处理
  15. MySQL InnoDB 表不存在问题修复
  16. 怎么将计算机桌面全部变成英文翻译,Word2010怎样将英文翻译成中文
  17. Hopcroft-Karp 算法
  18. 前端开发:npm install报错npm ERR! enoent ENOENT:no such file or directory, open…的解决方法
  19. URL 地址 加密控制
  20. simplesamlphp 配置,安装,SP版本

热门文章

  1. 幸福摩天轮动画作业案例
  2. Redis5种数据类型使用场景梳理
  3. 苹果8p电池多少毫安的_iPhone12 mini换屏幕多少钱?苹果官方更换屏幕和电池报价来了...
  4. potplayer 下载
  5. 虚拟机 重新获取ip地址
  6. 有声读物服务器Audiobookshelf
  7. Dashcam Viewer Plus v3.8.0 行车记录仪播放工具
  8. Linux之重定向符号
  9. 图 邻接矩阵的深度优先遍历
  10. 内网(离线)安装vue脚手架