news 2026/5/17 4:51:26

喜提一个bug,聊聊@NotEmpty和@NotBlank

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
喜提一个bug,聊聊@NotEmpty和@NotBlank

前言

上个版本,测试给我提了一个bug,说一个来源字段,传个空白字符串,也能更新成功,建议做一下校验

我想了一下,我的属性确实有校验呀

@NotEmpty(message = "source must not be empty") private String source;

@NotEmptyStringUtils.isEmpty校验效果是一样的,点进去源码一看,发现确实用得不太对

public static boolean isEmpty(CharSequence cs) { return cs == null || cs.length() == 0; }

如果传空白字符串的话,长度大于0的话,@NotEmpty并不能校验出来

1. 复现demo

String source =" "; System.out.println(StringUtils.isEmpty(source)); //输出长度 System.out.println(source.length());

运行结果:

false 2

传一个空白字符串,运行的结果是false

因为isEmpty校验的是,不能为null,而且长度必须大于0,而空的字符串,长度是大于0的,所以返回false。

2. 正确的使用方式

我们在校验空白字符串的时候,要用StringUtils.isBlank。它用于检查字符串是否为空白null、长度为 0 或仅包含空白字符

String source =" "; System.out.println(StringUtils.isBlank(source));

运行结果:

true

大家可以看下它的源码:

public static boolean isBlank(CharSequence cs) { int strLen = length(cs); if (strLen == 0) { returntrue; } else { for(int i = 0; i < strLen; ++i) { if (!Character.isWhitespace(cs.charAt(i))) { returnfalse; } } returntrue; } }

有这个Character.isWhitespace,嘻嘻,真相。因此,大家在日常开发中,做校验的时候,要注意这个哈。

3. @NotNull和@NotEmpty和@NotBlank区别

常用的注解还有@NotNull,我说说它们三的区别吧:

  • @NotNull:不能为null,但可以为空(如空字符串或空集合)

  • @NotEmpty:不能为null,可以为空的字符串但长度必须大于0

  • @NotBlank:不能为 null,不能为空字符串

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:11:20

自习室占座提醒:长时间离席时AI语音释放座位

自习室占座提醒&#xff1a;长时间离席时AI语音释放座位 在高校图书馆或城市共享自习室里&#xff0c;一个看似微小却长期困扰管理者的难题是&#xff1a;学生短暂离开后忘记返回&#xff0c;导致座位空置数小时。传统做法依赖管理员巡查或屏幕弹窗提示&#xff0c;但效果有限—…

作者头像 李华
网站建设 2026/5/14 21:05:03

探索条件扩散模型:从噪声中创造完美手写数字的实践解析

探索条件扩散模型&#xff1a;从噪声中创造完美手写数字的实践解析 【免费下载链接】Conditional_Diffusion_MNIST Conditional diffusion model to generate MNIST. Minimal script. Based on Classifier-Free Diffusion Guidance. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/5/11 4:16:54

NSMusicS:构建专属音乐世界的创新解决方案

NSMusicS&#xff1a;构建专属音乐世界的创新解决方案 【免费下载链接】NSMusicS NSMusicS&#xff08;Nine Songs Music World&#xff1a;九歌 音乐世界&#xff09;&#xff0c;open-source music software 项目地址: https://gitcode.com/GitHub_Trending/ns/NSMusicS …

作者头像 李华
网站建设 2026/5/1 19:45:35

LibreCAD终极指南:从入门到精通的完整解决方案

LibreCAD终极指南&#xff1a;从入门到精通的完整解决方案 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C14 using the Qt framework. It can read DXF and DWG files and can write DXF, PDF and SVG files. The user interface is hig…

作者头像 李华
网站建设 2026/5/3 5:58:27

LiveSplit计时神器:开启你的速度跑突破之旅

LiveSplit计时神器&#xff1a;开启你的速度跑突破之旅 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 在追求极限的速度跑世界中&#xff0c;每一帧画面、每一次按键都承载…

作者头像 李华
网站建设 2026/5/15 4:39:35

HeidiSQL数据库管理工具:10个高效技巧让你事半功倍

你知道吗&#xff1f;作为一名数据库管理员或开发者&#xff0c;每天面对大量的数据操作任务&#xff0c;如果能掌握几个实用的效率技巧&#xff0c;就能让你的工作变得轻松很多&#xff01;HeidiSQL作为一款完全免费的SQL编辑器和数据库管理工具&#xff0c;不仅支持MySQL、Po…

作者头像 李华