SpringMVC List<T> @NotEmpty @NotNull 入参校验未生效
场景描述
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 入参校验未生效相关推荐
- Java开发中业务层入参校验详细解析
2019独角兽企业重金招聘Python工程师标准>>> 背景 首先,我们达成以下共识: 一个服务方法,如果入参太多,且基本为非pojo,会给调用方造成不必要的干扰.尽管可以把文档写的 ...
- NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!
前言 管道这个词,若是有玩过Linux的小伙伴肯定知晓,比如(看图): 意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的~ 在nest里面的管道,主要是用来做入参数据类型的 ...
- SpringBoot 入参校验
这里写目录标题 一.添加依赖 二.验证 1.校验参数 2.自定义捕获异常 3.验证请求体 4.postman测试 三.自定义Validator 四.总结 1.注解 2.注意 3.拓展 一.添加依赖 基 ...
- java 入参校验_java开发参入参数校验
一:字段少的校验用法 Assert.notNull(payable, "Payable不能为空!"); Assert.notNull(payable.getNettingStatu ...
- java 入参校验_Java Validation方法入参校验实现过程解析
一.前言 在日常的开发中,经常需要对方法参数进行校验(非空.长度等).如果采用hardcode去校验(if..else..),会造成代码冗余,复用性低,导致维护成本比较高.借助Validation组件 ...
- SpringBoot2 参数管理实践,入参出参与校验
一.参数管理 在编程系统中,为了能写出良好的代码,会根据是各种设计模式.原则.约束等去规范代码,从而提高代码的可读性.复用性.可修改,实际上个人觉得,如果写出的代码很好,即别人修改也无法破坏原作者的思 ...
- 手动用hibernate-validator校验入参
所需jar包: hibernate-validator-4.1.0.Final.jar validation-api-1.0.0.GA.jar 因为用的是简单的spring mvc框架,入参是复杂的 ...
- spring入参为指定值,校验java入参的值为规定的值,利用Validator指定值校验注解——一看就会
我们在使用spring项目的时候,经常使用@Valid来对入参进行校验,比如必须为空,必须不为空,长度多少,是否符合邮件格式等等,同时也可以正则. 如下图所示, @Null(message = &qu ...
- SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
SpringMVC自动将请求参数和入参对象的属性进行一一绑定:要求请求参数的名字和javaBean入参的对象里面的属性名是一样的 1.SpringMVC中配置HiddenHttpMethodFilte ...
最新文章
- scrapy配置文件操作核心API解读
- FD.io/VPP — VPP Agent — Quickstart
- 服务器设备日常维护与管理论文,浅谈设备管理与维护论文
- tomcat上传文件到不同服务器,使用SpringMVC进行跨服务器上传文件出现的那些坑
- Google 的 C++ 代码规范
- 面试了一个2年程序员,竟然只会curd,网友神回复!
- istanbul —— JavaScript 代码覆盖率检查工具
- android微信条码支付接口,Android中调用微信支付接口
- opencv 图像读写显示、matplotlib 库图像读写显示
- Android 6.0动态权限(转)
- 如何用c语言编写控制台小游戏,使用c语言写WIN32控制台小游戏 贪吃蛇
- Ubuntu20.04 libcef笔记
- linux网页版控制台,linux Web控制台
- Java识别验证码和图像处理
- MySQL InnoDB 表不存在问题修复
- 怎么将计算机桌面全部变成英文翻译,Word2010怎样将英文翻译成中文
- Hopcroft-Karp 算法
- 前端开发:npm install报错npm ERR! enoent ENOENT:no such file or directory, open…的解决方法
- URL 地址 加密控制
- simplesamlphp 配置,安装,SP版本