Я получаю исключение NullPointerException при доступе к статическим ограничениям
Вопрос
Код
${personRequest.constraints.requestStatus.inList}
в моем файле gsp выдает NullPointerException
, но new PersonRequest (). ограничений ..
работает. Зачем? Разве ограничения
не статичны?
Решение
Скопировано из здесь (список рассылки grails-user)
но почему доступ к статическим полям не работает?
Потому что " ограничения " статическое поле является закрытой собственностью. Не имеет подсвойства, относящиеся к ограничения. р>
Grails оценивает это закрытие, используя построитель ограничений, который контролирует & Quot; вызывает & Quot; к методам, которые не существуют, то есть имена свойств, которые вы используете:
type( inList: [xxxxx])
... вызывает вызов метода для " типа " с параметр Map, содержащий " inList " == & GT; какое-то значение.
Из этой информации Grails создает список всех ограничений
доступно и связывает их с будущим экземпляры класса домена.Итак, при доступе к User.constraints статически, вы получаете
Закрытие.Мы могли бы посмотреть на замену значения свойства статических ограничений во время выполнения после оценки Закрытие инициализируется с. Однако это может быть "слишком много" магия. Что думают люди?
К вашему сведению, это так сейчас, потому что до 0.4 (если я помню) ограничения не были статичными, а в 0.4 они могут все еще быть нестатичным. Только в 0.5
мы бросим исключение / проигнорируем нестатические ограничения.