Grails: динамически изменять ограничения домена в контроллере - PullRequest
1 голос
/ 03 марта 2012

Я новичок в Grails.У меня есть класс домена, который имеет поле domainName в Grails (версия 2.0.1).В моем DomainConstraints.groovy у меня есть:

constraints = {
    domainName blank: false, matches: "^([^.]{0,63}\\.)*([^.]{1,63})\$"
}

, но в зависимости от некоторой ситуации я хочу сделать это поле domainName пустым: true или пустым: false.Я не проверяю свой класс домена по фактической базе данных, поэтому синхронизация с классом домена и реальной таблицей не является проблемой.

Итак, я хочу сделать что-то вроде этого (код ниже взят из моего воображения):

if(something){
   Domain.constraints.removeAttr('blank')
} else {
   Domain.constraints.addAttr('blank', 'true')
}

Возможно ли это?

1 Ответ

2 голосов
/ 03 марта 2012

Вы можете сделать что-то вроде этого:

class DomainConstraints {
  Boolean validateBlankFlag
  String domainName
  static transients = [validateBlankFlag]

  static constraints = {
    domainName validator :  { val,obj -> !val?.equals("") || !obj.validateBlankFlag}

  }
}

Затем просто установите validateBlankFlag на объекте домена в зависимости от того, хотите ли вы пустые значения или нет.Вам может даже не потребоваться свойство validateBlankFlag, если вы можете принять решение на основе других значений свойства в объекте DomainConstraints.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...