Используйте ограничение размера с Integer в Grails

В справочном документе говорится, что ограничение размера:

Использует диапазон Groovy для ограничения размера коллекции или числа или длины строки.

Когда я накладываю ограничение на размер целого числа, я получаю предупреждение

Свойство [prop] доменного класса TheClass имеет тип [java.lang.Integer] и не поддерживает ограничение [размер]. Это ограничение не будет проверяться во время проверки.

Док ошибся?

Я знаю, что мог бы использовать диапазон, но, как правило, было бы проще указать количество цифр в числе, а не фактическое значение (например, номер социального страхования должен состоять из 7 цифр или что-то в этом роде, а не создавать диапазон из 1000000 - 9999999).


person Fletch    schedule 20.08.2009    source источник


Ответы (4)


Если вам нужно количество цифр, убедитесь, что оно положительное и имеет определенную длину:

myInteger( validator: {
   return it > 0 &&  (it.toString.length) == 7
})
person Robert Munteanu    schedule 20.08.2009
comment
был ли необходим return? - person Alexander Suraphel; 08.11.2013


Вы также можете использовать max для ограничения целого числа, например myIntProp(max:9999999)

person Dave Klein    schedule 21.08.2009
comment
Это было бы похоже на использование диапазона. Как правило, было бы проще указать количество цифр в номере, а не фактическое значение (например, номер социального страхования должен иметь 7 цифр или что-то еще, а не диапазон от 1000000 до 9999999). - person Fletch; 21.08.2009
comment
Было бы проще, если бы это было возможно, но я не понимаю, как пользовательский валидатор проще, чем диапазон или макс. Еще одна вещь, которую следует учитывать, это то, что если вы работаете с номерами, такими как SSN или почтовые индексы США, которые могут содержать ведущие нули, в любом случае лучше использовать строку. Просто мысль. -- Дэйв - person Dave Klein; 21.08.2009
comment
Ну, есть место для ошибки, когда вы набираете 7 0 подряд, вот и все. Тем не менее, я, вероятно, соглашусь на это, а не на пользовательский валидатор, я думаю. Точка String действительна... но я думаю, что проще использовать число и просто отформатировать его для отображения определенного количества цифр (т.е. включить начальные нули). - person Fletch; 09.09.2009

Как вы указали в своей ссылке Jira, я думаю, что правильный ответ для этого - использовать ограничение range для целых чисел.

Я думаю, что это просто заменить size на range.

person James McMahon    schedule 12.06.2013