2008-10-18 8 views

Répondre

3

Copié à partir here (liste de diffusion Grails-utilisateur)

mais pourquoi accesing aux champs statiques ne fonctionne pas? Parce que le champ "contraintes" statique est une propriété de fermeture. Il n'a pas de sous-propriétés relatives aux contraintes .

Grails évalue cette fermeture en utilisant un constructeur de contrainte qui surveille « appels » à des méthodes qui n'existent pas, -à-dire les noms de propriétés que vous utilisez:

type(inList: [xxxxx]) 

... provoque un appel de méthode "type" avec a Paramètre Map contenant "inList" ==> une certaine valeur.

De cette info, Grails édifie une liste de toutes les contraintes
disponibles et les lie à l'avenir instances de la classe de domaine. Ainsi, lorsque vous accédez statiquement à User.constraints , vous obtenez une fermeture
.

Nous -could- regardons en remplaçant la valeur des contraintes statiques propriété lors de l'exécution après l'évaluation de la fermeture il est initialisé avec. Cependant, cela pourrait être un peu "trop" magie. Que 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 dans 0, peuvent encore être non-statiques. Seulement dans 0,5
allons-nous jeter une exception/ignorer contraintes non-statiques.

Questions connexes