在Grails中使用大小约束和Integer

时间:2009-08-20 15:44:34

标签: validation grails constraints gorm

参考文档说明尺寸约束:

  

使用Groovy范围来限制集合或数字的大小   字符串的长度。

当我对整数设置大小约束时,我会收到警告

  

域类的属性[prop] TheClass具有类型   [java.lang.Integer]并且不支持约束[size]。这个   验证期间不会检查约束。

该文档是错误的吗?

我知道我可以使用范围,但通常更容易指定数字中的数字位数而不是实际值(就像社会安全号码必须有7位数或其他任何数字,而不是制作范围为1000000 - 9999999)。

4 个答案:

答案 0 :(得分:2)

如果你想要数字位数,请确保它是正数并且有一定的长度:

myInteger( validator: {
   return it > 0 &&  (it.toString.length) == 7
})

答案 1 :(得分:2)

我在搜索JIRA时找到了答案:http://jira.codehaus.org/browse/GRAILS-947。该文档是错误的。

  

我们不需要数字字段的minSize,maxSize和size约束   因为此功能在最小,最大和范围限制上   各自。所以我们标记这些约束(仅限数字字段)   在0.5中弃用,并将其删除0.6。

看起来这取决于自定义验证器。

答案 2 :(得分:1)

您还可以使用max来约束像myIntProp这样的整数(最大值:9999999)

答案 3 :(得分:0)

正如您在Jira链接中指出的那样,我认为对此的正确答案是对整数使用range约束。

我认为将size替换为range非常简单。