news 2026/4/23 16:07: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/4/23 9:27:51

JavaQuestPlayer:跨平台Java游戏开发完全指南

JavaQuestPlayer&#xff1a;跨平台Java游戏开发完全指南 【免费下载链接】JavaQuestPlayer 项目地址: https://gitcode.com/gh_mirrors/ja/JavaQuestPlayer JavaQuestPlayer是一款基于Java SE开发的单用户Quest Soft Player&#xff08;QSP&#xff09;游戏播放器&…

作者头像 李华
网站建设 2026/4/23 9:29:09

caj2pdf:打破格式壁垒,让学术文献自由流通的智能转换工具

你是否曾在深夜赶论文时&#xff0c;发现下载的参考文献是CAJ格式&#xff0c;而你的平板、手机都无法直接阅读&#xff1f;是否因为CAJ文件的限制&#xff0c;无法高效整理和分享学术资料&#xff1f;今天&#xff0c;让我为你介绍一款彻底改变这一困境的开源利器。 【免费下载…

作者头像 李华
网站建设 2026/4/23 9:27:58

pure-python-adb 终极指南:用纯Python掌控Android设备调试

pure-python-adb 终极指南&#xff1a;用纯Python掌控Android设备调试 【免费下载链接】pure-python-adb This is pure-python implementation of the ADB client. 项目地址: https://gitcode.com/gh_mirrors/pu/pure-python-adb 在移动应用开发和测试过程中&#xff0c…

作者头像 李华
网站建设 2026/4/23 9:25:48

IDM使用优化脚本终极指南:专业级Windows系统优化方案

还在为Internet Download Manager试用期到期而烦恼吗&#xff1f;每次看到试用期倒计时就感到焦虑&#xff1f;别担心&#xff0c;今天我将为你揭示一套基于开源技术的专业级解决方案&#xff0c;让你彻底摆脱软件使用的困扰&#xff0c;享受完整的IDM功能体验。 【免费下载链接…

作者头像 李华
网站建设 2026/4/23 9:27:58

网页时光机插件:让消失的网页重现眼前

网页时光机插件&#xff1a;让消失的网页重现眼前 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 当你急需查阅某个重…

作者头像 李华
网站建设 2026/4/23 12:16:27

交通安全宣传:路口电子屏搭配事故警示语音

交通安全宣传&#xff1a;路口电子屏搭配事故警示语音 在早晚高峰的十字路口&#xff0c;一辆电动车无视红灯疾驰而过&#xff0c;几乎与横向车流相撞。监控系统瞬间捕捉到这一险情&#xff0c;紧接着&#xff0c;路口LED屏上弹出动态警示画面&#xff0c;同时一声严厉却清晰的…

作者头像 李华