我正在编写一个 Groovy 脚本(作为 Grails 插件的一部分),并且我想获取我的插件用户可能定义的 GrailsDomainClass 的属性列表。我可以使用domainClass.properties
(其中 domainClass 是GrailsDomainClass)来做到这一点。
但是,假设用户拥有 grails 域类:
class Example {
String name
static constraints = {
}
def getSomeNonExistingProperty(){
return "Not-a-real-property"
}
}
在这种情况下,domainClass.properties
返回一个同时包含name
和的列表someNoneExistingProperty
我知道这是因为 Grails 正在动态生成一个只读属性,以供有人使用 getBlah() 方法的地方使用。太好了,但是在我的脚本中,我只想使用“真实”属性(或至少非只读属性)执行一些操作。
也就是说,我想要一些区分或识别的方式someNonExistingProperty
为只读属性,或者,作为由 Grails 生成的属性,而不是由我的插件用户明确输入为 domainClass 中的字段。
我查看了GrailsDomainClassProperty类,它有一系列方法提供有关属性的信息。但是,它们似乎都没有告诉我属性是否为只读,或者让我区分 domainClass 中定义的字段和 Grails 由于“getSomeNonExistingProperty”而即时创建的字段()“ 方法。
我在这里遗漏了一些明显的东西吗?有没有办法只获得明确的用户定义字段的列表(例如,在上面的例子中,名称)?