news 2026/5/13 7:43:22

喜提一个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/7 5:35:54

强力解锁:5分钟掌握网络工具终极部署方案

还在为复杂网络工具配置而头疼吗&#xff1f;每次看到那些密密麻麻的命令行参数就望而却步&#xff1f;今天&#xff0c;让我们一同探索一种革命性的解决方案——一键部署系统&#xff0c;它将彻底改变你对网络工具的认知。 【免费下载链接】sing-box 最好用的 sing-box 一键安…

作者头像 李华
网站建设 2026/5/12 7:59:41

5分钟快速上手:Scrcpy安卓投屏完整使用指南

5分钟快速上手&#xff1a;Scrcpy安卓投屏完整使用指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/gh_mirrors/sc/scrcpy 想要在电脑上流畅操控安卓设备却不知从何下手&#xff1f;Scrcpy作为一款完全免费的安卓投…

作者头像 李华
网站建设 2026/5/12 2:08:49

LiveSplit完整指南:免费专业速度跑计时器的终极使用方法

LiveSplit完整指南&#xff1a;免费专业速度跑计时器的终极使用方法 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 在追求极致游戏速度的旅程中&#xff0c;一个精准可靠的…

作者头像 李华
网站建设 2026/5/12 9:00:22

数字鸿沟弥合:让偏远地区孩子听到优质语音教育资源

数字鸿沟弥合&#xff1a;让偏远地区孩子听到优质语音教育资源 在云南怒江峡谷的一间村小教室里&#xff0c;投影仪正播放一段数学动画——“分数的加减法”。屏幕上的卡通老师刚说完“我们一步一步来”&#xff0c;孩子们便齐声接道&#xff1a;“你一定能学会&#xff01;”这…

作者头像 李华
网站建设 2026/5/12 9:00:21

Nucleus Co-op:单机游戏秒变多人派对的终极神器

Nucleus Co-op&#xff1a;单机游戏秒变多人派对的终极神器 【免费下载链接】splitscreenme-nucleus Nucleus Co-op is an application that starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/spl/split…

作者头像 李华
网站建设 2026/5/12 9:00:08

救命神器8个AI论文平台,助你轻松搞定本科生毕业论文!

救命神器8个AI论文平台&#xff0c;助你轻松搞定本科生毕业论文&#xff01; AI 工具如何改变论文写作的未来 在当今这个信息爆炸的时代&#xff0c;学术写作已经不再是传统意义上的“苦差事”&#xff0c;而是借助 AI 工具变得更加高效、精准。对于本科生而言&#xff0c;撰写…

作者头像 李华