You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot JSON字符串校验:约束String类型userId不可为0值

解决String类型userId非空且不能为"0"的校验方案

嘿,刚好之前处理过类似的场景!你现在用@NotBlank确保userId非空,但还需要排除值为"0"的情况,又不想自定义校验器对吧?其实不用自己写,用现成的Bean Validation注解就能搞定:

  • 首选方案:使用@Pattern注解
    这是JSR-380(Java Bean Validation标准)自带的注解,支持通过正则表达式匹配字符串规则,完全满足你的需求。结合@NotBlank一起用就可以:
@NotBlank(message = "userId不能为空")
@Pattern(regexp = "^(?!0$).+$", message = "userId不能为0")
private String userId;

简单解释下这个正则:^(?!0$).+$ 表示整个字符串不能是纯"0",同时因为@NotBlank已经确保了字符串非空且不是空白字符,所以这个正则专门负责排除"0"的情况。

如果你的userId本身是数字类型的字符串(比如只能是正整数的字符串形式),还可以把正则改成更严谨的:

@NotBlank(message = "userId不能为空")
@Pattern(regexp = "^[1-9]\\d*$", message = "userId必须为非0的正数字符串")
private String userId;

这个正则会确保userId是从1开始的正整数字符串,直接排除了0和非数字的情况,一步到位。

  • 为什么不用其他注解?
    JSR标准里并没有专门针对String类型排除特定值(比如"0")的注解,@Positive这类注解只适用于数值类型,所以@Pattern是最省心的现成方案,不用额外写自定义校验器的代码。

内容的提问来源于stack exchange,提问作者lank81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:45:11