String.isEmpty()仅判断长度是否为0,无法处理null、空格、制表符等空白字符,需配合null检查和trim()或使用isBlank()才能可靠校验表单内容。

String.isEmpty() 是 Java 8 引入的便捷方法,用于判断字符串是否为 ""(空字符串),但它**不能单独用于可靠校验表单内容**——因为用户提交的字段常含空格、制表符、换行符,或为 null,而 isEmpty() 遇到 null 会直接抛出 NullPointerException,对空白字符也完全不敏感。
先处理 null,再判断是否真“有内容”
表单参数(如 Spring MVC 的 @RequestParam 或 Servlet 的 request.getParameter())可能为 null。必须先做非空检查:
- ❌ 错误写法:
str.isEmpty()—— 若str == null,运行时报错 - ✅ 安全写法:
str == null || str.trim().isEmpty()
其中 .trim() 去掉首尾空白(包括空格、\t、\n 等),再用 isEmpty() 判断是否只剩空或全空白。
避免只依赖 isEmpty() 的典型陷阱
以下输入看似“空”,但 isEmpty() 全部返回 false:
-
" "(一个空格)→isEmpty() == false -
" \t\n "(含制表符和换行)→isEmpty() == false -
" "(中文全角空格)→trim()不处理,仍为非空
若需兼容全角空格等 Unicode 空白,建议用 org.apache.commons.lang3.StringUtils.isBlank(),它内部调用 Character.isWhitespace(),覆盖更广。
在实际表单校验中推荐的轻量写法
不引入第三方库时,可封装一个简洁工具逻辑:
-
str == null || str.trim().isEmpty()→ 判定为“无实质性内容” - 搭配业务逻辑使用,例如:
if (username == null || username.trim().isEmpty()) { throw new IllegalArgumentException("用户名不能为空"); }
Spring Boot 用户还可结合 @NotBlank 注解(自动处理 null 和空白),比手写更安全省心。










