2009-08-20 28 views
5

參考文檔說,尺寸約束:使用尺寸約束使用整數Grails中

使用一個Groovy範圍來限制集合或數或 字符串的長度的尺寸。

當我把一個尺寸限制在一個整數,我得到域類theClass描述的警告

地產[道具]已鍵入 [java.lang.Integer中],不支持約束[尺寸]。驗證過程中不會檢查此 約束。

該文件是否錯誤?

我知道我可以使用範圍,但通常能夠更容易地指定數字中的位數而不是實際值(例如社會安全號碼必須有7位數字或其它任何值,而不是使範圍從1000000 - 9999999)。

回答

2

如果你想位數,確保它的積極意義,並具有一定的長度:

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

是'return'必要的嗎? – 2013-11-08 11:30:25

1

您還可以使用最大約束像myIntProp一個整數(最大值:9999999)

+1

這就像使用一個範圍。通常情況下,能夠指定數字中的位數而不是實際值(例如社會安全號碼必須有7位數字或其它任何數字,而不是使範圍爲1000000 - 9999999)更容易。 – Fletch 2009-08-21 08:34:06

+0

如果可能會更容易,但我不明白自定義驗證程序比範圍或最大值更容易。需要考慮的另一件事是,如果您使用的是像SSN或美國郵政編碼那樣的「數字」,它可以包含前導零,那麼最好使用字符串。只是一個想法。 - Dave – 2009-08-21 11:10:14

+1

呃,當你連續輸入7個0時,就有錯誤的空間,就這樣。不過,我可能會解決這個問題,而不是我認爲的自定義驗證器。字符串點是有效的...但我認爲它使用一個數字更容易,只是格式化它以顯示一定數量的數字(即包括前導零)。 – Fletch 2009-09-09 12:54:47

2

我找到答案,同時搜索JIRA:http://jira.codehaus.org/browse/GRAILS-947。該文件是錯誤的。

我們不需要minSize屬性,MAXSIZE和尺寸限制數字字段 了,因爲這個功能是在最小值,最大值和範圍的限制 相應。因此,我們將這些約束(僅適用於數字字段) 標記爲0.5,並將在0.6中將其刪除。

看起來它取決於自定義驗證器。

+2

「在0.6中刪除」從2.1.1開始,這仍然存在。 – 2013-06-12 22:38:31

0

正如您在您的Jira鏈接中指出的那樣,我認爲正確的答案是對整數使用range約束。

我認爲這是一個簡單的代替sizerange