Я получаю исключение NullPointerException при доступе к статическим ограничениям

StackOverflow https://stackoverflow.com/questions/214914

  •  03-07-2019
  •  | 
  •  

Вопрос

Код

${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
  мы бросим исключение / проигнорируем   нестатические ограничения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top