2012-02-08 2 views
0

Я новичок в grails, и у меня возникла проблема с тем, как написать правильные ограничения одного из свойств моего класса. Я хочу проверить, содержит ли вход пробел (''). Вот мой код ..Как проверить, имеет ли свойство пространство в groovy?

static constraints = {  

username nullable: false, blank: false, minSize: 6, matches: /[A-za-z0-9_]{6,}/, validator: { 
      Account.countByUsername(it) < 1 
     } 

Пожалуйста, помогите мне.

Спасибо!

ответ

1

Вы хотели бы использовать пользовательский валидатор, как:

username validator: { val -> if (val.contains(' ')) return 'value.hasASpace' } 

Edit: Как Р. Вальбуэна отметил, вам необходимо изменить свой countByUsername() валидатор к unique: true.

+0

Большое вам спасибо, но как только я добавил, что к моим кодам, опубликованным выше, у меня появилось сообщение об ошибке, относящееся к Account.countByUsername (it) <1, есть ли способ добавить ваш данный валидатор без изменения Account.countByUsername (it) <1? – chemilleX3

+1

Для имени пользователя вы, вероятно, хотите определить это ограничение как имя пользователя (unique: true) вместо того, чтобы делать запрос count –

+0

@R. Вальбуэна верна. Ваш валидатор countByUsername приведет к сбою проверки при любом обновлении. используя уникальный: истина - путь. FYI, если вам нужен специальный валидатор для проверки двух условий, ваш валидатор просто проверит, что оба условия были истинными. – erturne

1

В дополнение к пользовательскому валидатору вы также можете использовать matchesvalidator, чтобы убедиться, что используются только допустимые символы.

Похоже, вы используете это в своем исходном вопросе, и используемое вами регулярное выражение не позволяет пробелу, поэтому имя пользователя с пробелом должно не работать с этим валидатором.

Если вы хотите дать кому-то специальное сообщение, если в нем есть пробел (вместо некоторого другого недопустимого символа), то ответ doelleri - правильный способ сделать это.

Смежные вопросы