当前位置: 首页 > 知识库问答 >
问题:

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

胥和悌
2023-03-14

我想验证传入的数字是否为0到100之间的整数值(不含分数)。

我有javax的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,并引发任何异常。为什么不使用@数字进行检查?

共有2个答案

汲利
2023-03-14

我得到了同样的问题,通过使用BigDecimal而不是BigIntger/Intger/int得到了解决。当您将其定义为int时,它将自动删除十进制,然后应用验证。尝试使用和数据类型,其中包含十进制部分,如BigDecimal。@Digit将适用于BigDecimal。

池恩
2023-03-14

“某个字段”的类型是int,因此当您传递值95.5时,它会通过忽略小数部分而转换为int。如果您将某个字段的类型更改为包装类型,如BigDecimal、BigIntger等,那么它应该按预期工作。

 类似资料:
  • 问题内容: 如何在PHP中使用64位整数? 似乎它不是由配置文件提供的,而是可能是一个编译时选项,并且取决于平台。 问题答案: 本机64位整数需要64位硬件和64位版本的PHP。 在32位硬件上: 在64位硬件上:

  • 在实体类中使用namedQuery时出错 方法调用namedQuery java.lang.IllegalArgumentExcture:您试图设置类型类的值java.lang.字符串的参数值与预期类型的类java.lang.整数从查询字符串SELECT c从分类c WHEREc.id喜欢:值。 但当使用这种方法时,工作不会出错。 我在JPA中使用eclipselink 2.6

  • 我是编程新手,目前使用JavaFX作为个人组织工具。我在这里展示了一个按钮(称为book)和阶段(称为bookStages)的数组列表,一个名为addBook的VBox,以及一个名为bookButtonCount的Int设置为0。 第一个按钮将“书籍”数组列表中的一个按钮添加到VBox。vbox中的按钮应该从舞台数组列表中打开一个阶段。您应该能够多次触发该按钮,每次向vbox添加一个新按钮并将该按

  • 问题内容: 哪种Java数据类型可以存储较大的数值,例如9999999999? 问题答案: 您的具体示例可以存储在(或必要时)中。 如果在任何时候都需要更大的数字,则可以尝试 (如果是整数)或(如果是十进制)

  • 问题内容: 我想使用排球库发布布尔值,双精度数据。我不知道如何使用它。还有其他任何过程吗?谢谢。 这是我的方法。 问题答案:

  • 问题内容: 我知道有人多次问过这个话题,但是 我的问题是关于完整32位int的溢出 。例如: 我发现话题与这个类似的问题,但该算法是不完美的。 有没有简单,快速,安全的方法来检查此内容? 问题答案: 从Java 8开始,该类中提供了一组方法: …以及很长的版本。 如果发生溢出,这些方法中的每一个都会引发。否则,如果它在该范围内,它们将返回正确的结果。 添加示例: 看到此代码在IdeOne.com上