检查属性由属性名称提供

时间:2015-01-09 17:19:37

标签: grails gorm

我想检查的是一个字符串,其中包含我的一个实体类的有效属性的名称。

我已经找到了几个键,但最后我还是无法让它们工作,甚至不确定这样做的最佳做法。

提前致谢

2 个答案:

答案 0 :(得分:1)

每个Grails域对象都有一个注入domainClass属性,该属性公开persistentProperties列表。您可以通过以下方式访问属性列表:

def o = new MyDomain()
o.domainClass.persistentProperties

您还可以从Spring应用程序上下文中检索此列表,这样就不需要域类实例。在为每个域类创建的Spring bean(每个域有四个bean)中,有一个具有域类的全名,后缀为{{DomainClass}}。假设已经注入了grailsApplication:

grailsApplication.mainContext.getBean("MyDomainDomainClass").persistentProperties

persistentProperties列表中,您可以搜索具有给定名称的属性,如下所示:

persistentProperties.find { it.name == nameToSearchFor }

答案 1 :(得分:0)

最后我决定选择

MyClass.metaClass.properties.find { it.name == params.searchedColName }

我认为这比@Andrew von Dollen提议的解决方案要好一些,因为我避免玩弹簧环境......觉得这样更加时髦。