2012-02-15 84 views
11

我想允許一些領域,包括zero.How只有正整數我可以定義使用JSR 303
此驗證我試圖驗證正整數

  1. @Min(value=0 message = "msg1") - 但它允許像1.2浮點值。

  2. @Digits(fraction = 0, integer = 10, message ="msg2") - 它接受負值。

  3. @Min(value=0, message = "msg1")
    @Digits(fraction = 0, integer = 10, message ="msg2") - 它工作正常,但有時這兩個消息,即msg1msg2顯示。

有什麼建議嗎?

謝謝!

+0

不使用整型字段任何特別的原因? – Perception 2012-02-15 12:27:49

+0

@Perception:我正在使用遺留應用程序,現在無法更改它。 – xyz 2012-02-15 12:30:22

+0

使用自定義約束? - http://nonrepeatable.blogspot.com/2010/05/creating-custom-jsr-303-constraint.html – 2012-02-15 12:45:17

回答

10

看起來你正在尋找自然數,我認爲你可以使用正則表達式來獲得所需的輸出。像

@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")

+9

但遺憾的是它不能用於整數 – fmchan 2015-01-23 07:34:47

+0

@fmchan整數,是不是'@ Min'的解決方案?我沒有看到正則表達式中的整數 – eis 2017-01-16 07:07:39

12

東西才使用註釋@Min在bean:

@Min(value = 0L, message = "The value must be positive") 
private Double value; 
2

如果使用休眠驗證器,那麼你可以創建它通過結合@Min@Digits從第3個選項自定義約束使用@ConstraintComposition(AND)。當您添加@ReportAsSingleViolation時,只會顯示自定義消息。

1

其更好地使用範圍註釋如下圖所示爲正數

@Range(min = 0l, message = "Please select positive numbers Only") 

對於負數

@Range(min = -9223372036854775808l, max = 0l, message = "Please select Negative numbers Only") 
+2

爲什麼它更好? – naXa 2017-09-07 14:18:18