簡體   English   中英

如何在 integer 值上使用 @Digits 驗證

[英]How to use @Digits validation on integer value

我想驗證傳入的數字是否為 integer 值(無分數),介於 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 class 中用作輸入法(@PostMapping)參數。

@Min 和 @Max 工作正常,但 @Digits 不行。 當我發送數字時,例如 95.5,它會轉換為 95 並引發任何異常。 為什么@Digits 不檢查它?

“someField”的類型是 int,因此當您傳遞值 95.5 時,它會通過忽略小數部分而轉換為 int。 如果您將 someField 的類型更改為包裝類型,如 BigDecimal、BigInteger 等,那么它應該可以按預期工作。

我遇到了同樣的問題,通過使用 BigDecimal 而不是 BigInteger/Integer/int 得到了解決。 正如您將其定義為 int ,它將自動刪除小數,然后應用驗證。 嘗試使用其中包含小數部分的數據類型,如 BigDecimal。 @Digit 將與 BigDecimal 一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM