Je reçois une exception NullPointerException lors de l'accès à des contraintes statiques

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

  •  03-07-2019
  •  | 
  •  

Question

Le code

${personRequest.constraints.requestStatus.inList}

dans mon fichier gsp génère une NullPointerException , mais new PersonRequest (). contraintes .. fonctionne. Pourquoi? Les contraintes ne sont-ils pas statiques?

Était-ce utile?

La solution

Copié à partir de ici (liste de diffusion grails-user)

  

mais pourquoi accéder aux champs statiques   ne fonctionne pas?

     

Parce que les " contraintes " champ statique   est une propriété de fermeture. Il n'a pas   sous-propriétés relatives à la   contraintes.

     

Grails évalue cette fermeture en utilisant un   constructeur de contraintes qui surveille   " appels " aux méthodes qui n'existent pas,   c'est-à-dire les noms de propriété que vous utilisez:

type( inList: [xxxxx])
     

... provoque un appel de méthode à "type". avec   un paramètre Map contenant " inList "   == > un peu de valeur.

     

À partir de cette information, Grails construit un   liste de toutes les contraintes
  disponible et les lie au futur   instances de la classe de domaine.

     

Donc, lorsque vous accédez à User.constraints   statiquement, vous obtenez un
  Fermeture.

     

Nous pourrions envisager de remplacer la valeur   de la propriété des contraintes statiques   au moment de l'exécution après avoir évalué le   La fermeture est initialisée avec.   Cependant, cela pourrait être un peu "trop".   la magie. Qu'en pensent les gens?

     

FYI c'est comme ça maintenant parce que jusqu'à   0.4 (si je me souviens bien), les contraintes n'étaient pas statiques, et en 0.4 elles peuvent   toujours être non statique. Seulement dans 0.5
  allons-nous jeter une exception / ignorer   contraintes non statiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top