如何对整数值使用@digits验证

u3r8eeie  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(995)

我想验证传入的数字是否是0到100之间的整数值(不含分数)。
我有javax.validation注解的dto:

@Min(value = 1, message = "some msg")
@Max(value = 100, message = "some msg")
@Digits(integer = 3, fraction = 0, message = "some msg")
private int someField;

dto在@restcontroller类中用作输入方法(@postmapping)参数。
@min和@max可以正常工作,但@digits不行。当我发送数字时,例如95.5,它被转换成95并且抛出任何异常。为什么不用@数字检查?

guicsvcw

guicsvcw1#

“somefield”的类型是int,所以当您传递值95.5时,它将通过忽略小数部分而转换为int。如果您将somefield的类型更改为 Package 器类型,如bigdecimal、biginteger等,那么它应该按预期工作。

相关问题