2009-08-20 8 views
5

Doc referencyjna mówi, że ograniczenie wielkości:Korzystanie z ograniczeniem wielkości Integer w Grails

Używa Groovy zakres w celu ograniczenia wielkości kolekcji numeru lub długość napisu.

Kiedy kładę ograniczenie wielkości na liczbę całkowitą, otrzymuję ostrzeżenie

Właściwość [prop] klasowej domeny theClass ma typ [java.lang.Integer] i nie umożliwia ograniczenie [rozmiar]. Ograniczenie nie będzie sprawdzane podczas sprawdzania poprawności.

Czy dokument jest nie tak?

Wiem, że mógłbym użyć zakresu, ale generalnie łatwiej byłoby określić liczbę cyfr w liczbie, a nie rzeczywistą wartość (jak numer ubezpieczenia społecznego musi mieć 7 cyfr lub cokolwiek to jest, zamiast zakres 1000000 - 9999999).

Odpowiedz

2

Jeśli chcesz liczbę cyfr, upewnij się, że to pozytywne i ma pewną długość:

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

było "koniecznością" zwrotu? –

1

Można również użyć maksymalnie ograniczyć liczbę całkowitą jak myIntProp (max: 9999999)

+1

To byłoby po prostu jak przy użyciu zakresu. Zasadniczo łatwiej byłoby podać liczbę cyfr w liczbie, a nie rzeczywistą wartość (jak numer ubezpieczenia społecznego musi mieć 7 cyfr lub cokolwiek innego, a nie zakres 1000000 - 9999999). – Fletch

+0

Byłoby łatwiej, gdyby było to możliwe, ale nie widzę, jak niestandardowy weryfikator jest łatwiejszy niż zakres lub maks. Inną rzeczą, którą należy wziąć pod uwagę, jest to, że jeśli pracujesz z "numerami", takimi jak SSN lub kody pocztowe w USA, które mogą zawierać początkowe zera, lepiej byłoby mimo to użyć Stringa. Tylko myśl. - Dave –

+1

Cóż, jest miejsce na błędy, gdy wpisujesz 7 0 z rzędu, to wszystko. Niemniej jednak prawdopodobnie będę się nad tym zastanawiał, a nie zwyczajny weryfikator. Punkt łańcucha jest prawidłowy ... ale myślę, że łatwiej jest użyć liczby i po prostu sformatować ją tak, aby wyświetlała pewną liczbę cyfr (tj. Zawierała zera na początku). – Fletch

2

I znalazłem odpowiedź podczas wyszukiwania JIRA: http://jira.codehaus.org/browse/GRAILS-947. Dokument jest błędny.

Nie potrzebujemy minSize, maxSize i ograniczenia rozmiarów pól numerycznych już od funkcjonalność ta jest minimalna, maksymalna i ograniczenia zasięgu odpowiednia. Oznaczamy więc te więzy (tylko dla pól liczbowych) jako przestarzałe w 0.5 i usuniemy je w 0.6.

Wygląda na to, że zależy to od niestandardowego weryfikatora.

+2

"usuń go w 0.6" Od wersji 2.1.1 nadal tam jest. –

0

Jak wskazano w linku Jira, myślę, że poprawną odpowiedzią na to jest użycie ograniczenia range dla liczb całkowitych.

Myślę, że jest to proste, ponieważ zastępuje size z range.

Powiązane problemy