Я получаю исключение NullPointerException при доступе к статическим ограничениям - PullRequest
1 голос
/ 18 октября 2008

код

${personRequest.constraints.requestStatus.inList}

в моем файле gsp выдает NullPointerException, но new PersonRequest().constraints.. работает. Зачем? Разве constraints не статичен?

1 Ответ

3 голосов
/ 18 октября 2008

Скопировано из здесь (список рассылки grails-user)

но зачем обращаться к статическим полям не работает?

Потому что статическое поле "ограничений" является закрытой собственностью. Не имеет подсвойства, относящиеся к ограничения.

Grails оценивает это закрытие, используя построитель ограничений, который контролирует «вызывает» методы, которые не существуют, то есть имена свойств, которые вы используете:

type( inList: [xxxxx])

... вызывает вызов метода "type" с параметр Map, содержащий «inList» ==> некоторое значение.

Из этой информации Grails создает список всех ограничений
доступно и связывает их с будущим экземпляры класса домена.

Итак, при доступе к User.constraints статически вы получаете
Закрытие.

Мы могли бы посмотреть на замену значения свойства статических ограничений во время выполнения после оценки Закрытие инициализируется с. Однако это может быть немного "слишком много" магия. Что думают люди?

К вашему сведению, сейчас так, потому что до 0.4 (если я помню) ограничения не были статичными, а в 0.4 они могут все еще быть нестатичным. Только в 0.5
мы бросим исключение / проигнорируем нестатические ограничения.

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