2012-02-15 56 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