La distinction entre les champs de classe de domaine Grails et méthodes getBlah () via GrailsDomainClassProperty

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

Question

J'écris un script Groovy (dans le cadre d'un plugin Grails) et je veux obtenir une liste des propriétés pour un GrailsDomainClass qu'un utilisateur de mon plug-in peut définir. Je peux le faire en utilisant domainClass.properties (où domainClass est GrailsDomainClassProperty classe et il dispose d'une gamme de méthodes fournissant des informations sur la propriété. Cependant, aucun d'entre eux semblent me dire si une propriété est en lecture seule ou non, ou pour me permettre de distinguer entre un champ défini dans le domainClass et un champ créé sur la volée par Grails à la suite d'un « getSomeNonExistingProperty () » méthode.

Suis-je manque quelque chose évidente ici? Est-il possible d'obtenir une liste de seulement les champs explicitement définis par l'utilisateur (par exemple le nom, dans l'exemple ci-dessus)?

Était-ce utile?

La solution

J'ai rencontré ce problème plusieurs fois, et au lieu d'essayer de travailler autour En général, je viens de finir de renommer ma méthode de getX(). Il est probablement l'option la plus simple.

Edit: Sinon, je me demande si vous pouvez utiliser la réflexion pour voir quelles méthodes sont définies sur la classe, et tout sur vos propriétés itérer si la propriété a un getter explicite défini et omettez. Je ne suis pas très familier avec la réflexion en matière de Groovy et Grails, en particulier avec les méthodes dynamiques, mais il est une voie possible de l'enquête.

Autres conseils

Je crois que les propriétés transitoires sont ce que vous essayez d'exclure

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