Spring Validation如何配置以排除0、仅允许大于0的小数值?
Spring Validation 大于0数值校验配置方案
你的需求是校验数值严格大于0、不允许等于0,同时放行所有正小数,@Min注解无法满足的核心原因是@Min的阈值为long类型整数,且默认包含阈值本身,没有办法设置「大于0不包含0」的规则,解决方案如下:
方案:使用@DecimalMin注解
@DecimalMin是Bean Validation规范内置的注解,支持小数阈值配置,还可以通过inclusive参数控制是否包含阈值本身:
- 把原有
@Min注解替换为@DecimalMin,设置value = "0"、inclusive = false即可实现严格大于0的校验规则。
配置后的代码示例
@NotNull(message = "distance should not be empty") @DecimalMin(value = "0", inclusive = false, message = "distance value should be above 0.") private Double distance;
参数说明
value:填写阈值的字符串形式,支持小数格式inclusive:布尔值,为false时表示校验规则为大于阈值,为true时表示大于等于阈值
该注解同时兼容Double、Float、BigDecimal等所有数值类型的字段,0.1、0.001这类正小数都可以正常通过校验,0会被正常拦截。
内容的提问来源于stack exchange,提问作者diaop
相关产品推荐
相关产品推荐

