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
相关产品推荐
相关产品推荐

