Java中如何实现地址字段校验:某字段填充则其余全部必填
地址字段校验逻辑实现方案
你需要实现的是联动必填校验规则:Street Address、City、Zip 三个字段要么全部为空,要么全部非空,只要任意一个字段已填充,剩余两个字段不允许为空。
你用到的StringUtils.hasText()(Spring 工具类)刚好适配地址校验场景,该方法会判定字符串不为null、长度大于0且不全为空白字符,能过滤掉用户只输入空格的无效情况。
方案1:简洁合并校验
逻辑清晰,性能最优,适合不需要单独提示缺失字段的场景:
// 预先计算三个字段的有效非空状态 boolean hasAddressLine = StringUtils.hasText(addressLine); boolean hasCity = StringUtils.hasText(city); boolean hasZip = StringUtils.hasText(zip); // 核心校验逻辑:存在已填字段,但没有全部填全时触发错误 if ((hasAddressLine || hasCity || hasZip) && !(hasAddressLine && hasCity && hasZip)) { // 自定义错误处理逻辑,比如抛出参数异常、返回校验失败结果 throw new IllegalArgumentException("地址信息不完整:Street Address、City、Zip 需同时填写或全部留空"); }
方案2:分字段校验提示
适合需要明确告知用户哪个字段缺失的场景,前端交互更友好:
boolean hasAddressLine = StringUtils.hasText(addressLine); boolean hasCity = StringUtils.hasText(city); boolean hasZip = StringUtils.hasText(zip); if (hasAddressLine || hasCity || hasZip) { if (!hasAddressLine) { throw new IllegalArgumentException("Street Address 不可为空"); } if (!hasCity) { throw new IllegalArgumentException("City 不可为空"); } if (!hasZip) { throw new IllegalArgumentException("Zip 不可为空"); } }
内容的提问来源于stack exchange,提问作者ron773
相关产品推荐
相关产品推荐

