stick-i / spel-validator

一个强大的 Java 参数校验包,基于 SpEL 实现,扩展自 jakarta.validation-api 包,用于简化参数校验,几乎支持所有场景下的参数校验。
https://spel-validator.sticki.cn/
Apache License 2.0
144 stars 33 forks source link

新增约束注解,对标 `@Min`、`@Max`。 #26

Closed stick-i closed 4 weeks ago

stick-i commented 2 months ago

新增约束注解 @SpelMin、@SpelMax,对标 javax.validation 包下的这两个注解:

具体的描述可以参考下这两个注解类的源码注释:

image

翻译:

带注释的元素必须是一个数字,其值必须大于或等于指定的最小值。 支持的类型有: BigDecimal BigInteger byte、short、int、long和它们各自的包装器 注意,由于舍入错误,不支持double和float (一些提供程序可能提供一些近似支持)。 null元素被认为是有效的。

stick-i commented 2 months ago

@oddfar 需要你在该issue下有评论之后我才能将它分配给你。


我对 SpelMin 进行了一点完善,主要是在类型判断和测试用例上。目前还存在一个问题:对于Double类型,该注解无法支持 NaN 或者 POSITIVE_INFINITY 这样的数值比较。

我觉得可以参考下 org.hibernate.validator.internal.constraintvalidators.bv.number.bound.NumberComparatorHelperjava.lang.Double#compare 的实现方法。


最后,对于 SpelMinSpelMax ,我觉得可以用一个抽象类来作为他们的父类,以减少重复的代码项。

oddfar commented 2 months ago

@oddfar 需要你在该issue下有评论之后我才能将它分配给你。

我对 SpelMin 进行了一点完善,主要是在类型判断和测试用例上。目前还存在一个问题:对于Double类型,该注解无法支持 NaN 或者 POSITIVE_INFINITY 这样的数值比较。

我觉得可以参考下 org.hibernate.validator.internal.constraintvalidators.bv.number.bound.NumberComparatorHelperjava.lang.Double#compare 的实现方法。

最后,对于 SpelMinSpelMax ,我觉得可以用一个抽象类来作为他们的父类,以减少重复的代码项。

好的,我完善一下这块的逻辑