2、生产问题分析之@NotEmpty、@NotBlank、@NotNull用法

validation校验包常用校验注解@NotEmpty,@NotBlank,@NotNull等注解 阅读详情

问题描述

Controller层query方法QueryRequest对象参数校验失效 。

Controller代码如下:

public interface IQueryResource {

    /**
     *
     * @param 请求数据
     * @return 返回查询结果
     */
    @GetMapping
    DeferredResult<HttpEntity<ResponseObject<QueryResponse>>> query(QueryRequest request);

}

QueryReques对象如下:

@Data
public class QueryRequest {

    private String userId;

    @NotEmpty(message = "地区不能为空")
    private Long area;
}

原因分析:

1、Controller层query方法参数前没加注解@Validated或者@Valid,所以对象内部@NotEmpty不起作用;
2、其次

@NotEmpty适用于 String、Collection集合、Map、数组等,加了@NotEmpty 的参数不能为 Null 或者长度为 0;
@NotBlank适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0;
@NotNull适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty);

因此这里应该使用@NotNull更好;


解决方案:

1、Controller层query方法参数前没加注解@Validated;
2、@NotEmpty注解改为@NotNull。

修改后代码如下:
Controller代码如下:

public interface IQueryResource {

    /**
     *
     * @param 请求数据
     * @return 返回查询结果
     */
    @GetMapping
    DeferredResult<HttpEntity<ResponseObject<QueryResponse>>> query(@Validated QueryRequest request);

}

QueryReques对象如下:

@Data
public class QueryRequest {

    private String userId;

    @NotNull(message = "地区不能为空")
    private Long area;
}

扩展@Valid与@Validated的使用与区别

相同点:

@Valid、@Validated 注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则
校验规则如上@NotEmpty,@NotBlank,@NotNull等等的注解就是,不加上就不会生效!

不同点:

1、分组上:
@Valid 不支持分组, @Validated则支持分组验证。

2、使用位置:
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上

3、包位置
@Valid 包位置:javax.validation;
@Validated 包位置 org.springframework.validation.annotation是@Valid 的一次封装,是Spring提供的校验机制使用。

4、非Controller使用(极少)
@Validated可以用到非Controller层,被Spring容器管理的类上。
一定一定不要忘记在类上加上 @Validated  注解了,这个参数可以告诉 Spring 去校验方法参数。

常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|优快云创作打卡》 文章目录一、常用注解@NotEmpty,@NotBlank,@NotNull介绍二、@Valid与@Validated的使用与区别2.1@Valid与@Validated区别:2.2嵌套验证三、总结 一、常用注解@NotEmpty,@NotBlank,@NotNull介绍 包位置:javax.validation.constraints.xxx @NotEmpty 用在集合上面,一般用来校验List类型(不能注释枚举),而且长度必须大于0 @NotBlank 用在String上面,一般用来校验Stri 阅读详情

相关推荐

@NotNull @NotEmpty @NotBlank java校验注解 validation

@NotNull @NotEmpty @NotBlank java校验注解 validation

global_coding的博客 9982

@NotEmpty、@NotBlank、@NotNull 区别和使用

适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0。适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0。

m0_47432188的博客 1642

@NotNull、@NotBlank 和 @NotEmpty 注解的区别

NotNull: 确保对象不是null,但不检查空字符串或集合的空性。@NotBlank: 确保字符串不是null,并且去除前后的空白字符后至少包含一个字符。@NotEmpty: 确保集合不是null,并且至少包含一个元素。

千层冷面的博客 986

SpringBoot参数校验异常捕获及返回具体参数名和异常类型

Java SpringBoot参数校验,单个参数校验,对象参数校验,全局捕获类,返回具体参数信息和异常

qq_30925199的博客 1704

java中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法和区别

java中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法和区别

NCGZS 1424

鸿蒙设备部署轻量级Web服务器NexServer实践

Web服务器作为互联网基础设施的核心组件,其轻量化部署在移动终端领域具有重要实践价值。本文以鸿蒙操作系统为技术载体,深入解析微内核架构如何通过资源隔离和分布式软总线实现服务高可用。重点探讨NexServer这一专为嵌入式场景设计的轻量级服务器,其ARM原生支持特性与15MB级内存占用,在HTTP/2协议处理与WebSocket通信中展现出独特优势。在智能家居控制面板、边缘计算节点等物联网典型场景中,鸿蒙设备结合NexServer的方案相比传统Nginx部署可降低60%资源消耗。通过实测数据对比,该组合在50

weixin_30411239的博客 483

捕捉@Validated校验非空注解@NotNull、@NotBlank等自定义的message返回给前端

【代码】捕捉@Validated校验非空注解@NotNull、@NotBlank等自定义的message返回给前端。

hkl_Forever的博客 3433

LinuxMint 22.1(Ubuntu24.04)下通过Wine完美运行同花顺远航版的实战指南

本文详细介绍了在LinuxMint 22.1(Ubuntu24.04)系统下通过Wine完美运行同花顺远航版的实战指南。从基础环境准备到深度优化,包括Wine环境配置、同花顺远航版安装、字体显示调优、任务栏兼容性修复等关键步骤,帮助Linux用户高效使用同花顺远航版进行股票交易和行情分析。

weixin_30919429的博客 571

@NotEmpty来做参数校验返回 400,并且不显示具体 message 解决

@RequestBody 来做参数校验返回 400,并且不显示具体 message 如何解决。

qq_50523945的博客 890

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 255

STM32F4三重ADC+DMA双缓冲实战:用CubeMX搞定同步采样,告别数据覆盖烦恼

本文详细介绍了STM32F4三重ADC与DMA双缓冲技术的实战应用,通过CubeMX配置实现同步采样,解决数据覆盖问题。内容涵盖硬件架构解析、CubeMX工程配置、双缓冲实现技巧及调试优化方法,适用于电机控制、电力监测等需要高精度多通道信号采集的场景。

weixin_30627341的博客 358

java 校验注解之 @NotNull、@NotBlank、@NotEmpty

实体字段校验 @NotNull、@NotEmpty、@NotBlank 1.@NotNull 不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制 2.@NotEmpty 不能为 null,且长度必须大于 0,一般用在集合类上或者数组上 3.@NotBlank 只能作用在接收的 String...

dctCheng的博客 6万+

C# 与 TensorFlow.NET:深度神经网络构建与优化的终极指南

是一个由开源社区维护的 C# 库,它将 TensorFlow 框架的强大功能带到了 C# 开发者的手中。TensorFlow 本身是 Google 开发的一个机器学习框架,广泛应用于深度学习、强化学习等领域。通过 TensorFlow.NET,C# 开发者无需切换语言环境,可以直接在 C# 中构建、训练和优化深度神经网络模型。首先,我们需要定义一个神经网络。该网络将包含输入层、隐藏层和输出层。// 输入张量(XOR 输入,2 个特征)// 输出张量(标签,1 个输出)// 定义第一个隐藏层。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1457

@NotEmpty、@NotBlank、@NotNull的区别

在网上搜索的内容,大致如下: @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释:1. @NotEmpty /** * Asserts that the annotated string, collection, ma

zZ_life的博客 6万+

开源GIS -- 笔记

基础开发库 数据读写:GDAL/OGR(C/C++) ArcGIS和GE都是使用此工具 投影转换:Proj.4(C/C++) 拓扑计算:JTS(Java),GEOS(C++),Shapely(python) 组件式开发库 GeoTools(Java),DotSpatial(.NET) 空间分析: Scipy(通用科学计算、方程求解), numpy,NextworkX, rPy(统计分析), Scikit-learn,pysal(空间分析) 深度学习: Keras、 tensorflow、 pytor

DZ Space 4521

PD详解—第一章—Type-C连接

Type-C连接 今天大师匈下班比较早,再给大家侃一侃PD,希望大家支持。 PD和Type-c的关系 首先讲一下PD快充的实现步骤,本文主要是Source端(电源),Sink端的差不多也一样,只是策略不同而已。 TypeC连接-->广播电源能力Source capbility(数据交互)->打电压电流->等待其他指令。 所以typec连接是第一步,很多人会从字面意思理解typec连接,这不就是把线给插上去就好了吗? 不知道有没有优秀的同学想到正确答案; 正确答案:typec连接的本质是为

大师匈的博客 1万+

@NotNull, @NotEmpty和@NotBlank之间的区别及示例

三者之间的区别 `@NotNull:` CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。 `@NotEmpty:` CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。 `@NotBlank:` String 不是 n...

qq_40600507的博客 1万+

《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录

本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。

图形/计算GPU的驱动与虚拟化技术分享园地 3741

@NotNull 和 @NotEmpty 和@NotBlank 区别

@NotNull 和 @NotEmpty  和@NotBlank 区别 如果在使用注解 @Validator的时候,出现如下错误: javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer 那一定是在基本类型上使用注解出现的错误,需要注意的是: @NotN...

Hebe 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Java 中的 @NotNull、@NotEmpty 和 @NotBlank 的区别

注解是否允许null是否允许空字符串""是否允许空白字符字符串" "@NotNull否是是@NotEmpty否否是@NotBlank否否否希望这个简单的总结能帮助你更清楚地选择合适的注解,确保代码中的数据符合预期。

龚小帅的博客 2790

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot 注解@NotBlank、@NotNull、@NotEmpty的区别以及用法

@NotNull 验证对象是否不为null, 无法查检长度为0的字符串. @NotBlank 检查约束 (字符串) 是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty 检查(集合)约束元素是否为NULL或者是EMPTY. @Data @AllArgsConstructor @NoArgsConstructor @Builder public class DepartmentDto extends BaseDto { @NotBlank(mes...

wang_1220的博客 5017

参数校验注解@NotNull、@NotBlank、@NotEmpty

参数校验注解简介入参测试代码总结 简介 本文只对结论做说明,不深究过程 @NotNull 可以加在所有类型上,与@NotBlack或者 @NotEmpty配合有奇效 @NotBlank 只能用于字符串 用在其他类型上会报错 @NotEmpty 只用于集合,用于其他类型会报错 探讨一下这三个注解加在字段上的作用 import org.springmodules.validation.bean.conf.loader.annotation.handler.NotBlank; import

wuhen77的博客 4569

使用 @NotEmpty、@NotBlank、@NotNull 注解进行参数校验

在 Spring Boot 中使用参数校验注解可以方便地对用户传入的参数进行校验,保证数据的有效性和安全性。同时,通过定义全局异常处理器,可以统一处理所有的参数校验异常,提高了代码的健壮性和可维护性。

weixin_54574094的博客 4192

校验注解-- @NotNull、@NotEmpty、@NotBlank

实体字段校验 @NotNull、@NotEmpty、@NotBlank 1.@NotNull:不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制 2.@NotEmpty: 不能为 null,且长度必须大于 0,一般用在集合类上或者数组上 3.@NotBlank:只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:

IT二叔的博客 7034

Spring Boot 中@NotNull, @NotEmpty和@NotBlank

简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。 @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。 @NotBlank://String ...

大米饭 2681
上一篇: 2、企业级Jmeter压力测试方法及报告模板
下一篇: 多线程之ThreadPoolExecutor详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白de成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值