news 2026/5/29 15:38:43

喜提一个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/28 12:20:19

AI艺术创作新境界:Stable Diffusion WebUI Forge风格迁移创意指南

AI艺术创作新境界&#xff1a;Stable Diffusion WebUI Forge风格迁移创意指南 【免费下载链接】stable-diffusion-webui-forge 项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge 想象一下&#xff0c;把你的日常照片瞬间变成梵高笔下的…

作者头像 李华
网站建设 2026/5/28 12:20:20

游戏存档守护者:Ludusavi让你的游戏记忆永不丢失

在数字娱乐时代&#xff0c;游戏存档承载着玩家无数小时的奋斗与回忆。然而系统崩溃、硬件故障或意外操作常常威胁着这些宝贵数据的安危。Ludusavi作为专业的游戏存档备份解决方案&#xff0c;以其强大的功能和出色的性能&#xff0c;为玩家构建了一道可靠的数据防护屏障。 【免…

作者头像 李华
网站建设 2026/5/29 22:52:10

用Serverless架构部署轻量级爬虫:低成本、高弹性的数据采集方案

在数据驱动的时代&#xff0c;爬虫已成为获取公开信息的重要工具。但传统爬虫部署方式&#xff08;如自建服务器&#xff09;存在成本高、维护复杂、难以应对流量波动等问题。Serverless架构的出现&#xff0c;为轻量级爬虫提供了更优解——无需管理服务器&#xff0c;按实际执…

作者头像 李华
网站建设 2026/5/28 15:54:36

BongoCat桌面萌宠应用:打造键盘互动的趣味数字伙伴

BongoCat桌面萌宠应用&#xff1a;打造键盘互动的趣味数字伙伴 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作&#xff0c;每一次输入都充满趣味与活力&#xff01; 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat BongoCat是…

作者头像 李华
网站建设 2026/5/29 21:46:42

【Dify Next.js部署优化终极指南】:揭秘提升应用性能的5大核心策略

第一章&#xff1a;Dify Next.js部署优化概述在构建现代化的前端应用时&#xff0c;Dify 与 Next.js 的结合为开发者提供了强大的 AI 驱动能力与服务端渲染性能。然而&#xff0c;在实际部署过程中&#xff0c;若未进行合理优化&#xff0c;可能导致资源加载缓慢、首屏渲染延迟…

作者头像 李华
网站建设 2026/5/28 19:29:46

Mobox多语言配置全攻略:打造个性化Windows应用运行环境

想要在Android设备上流畅运行Windows应用程序吗&#xff1f;Mobox作为一款强大的工具&#xff0c;通过Box64和Wine技术&#xff0c;让你在Termux中轻松实现这一目标&#xff01;更重要的是&#xff0c;Mobox提供了丰富的多语言支持&#xff0c;让全球用户都能以自己熟悉的语言享…

作者头像 李华