检查 属性 是否存在 属性 名称

Check property is present by property name

我想检查一个字符串是否包含我的实体 class 之一的有效 属性 的名称。

我想出了几个键,但最后我无法让它们工作,甚至不确定这样做的最佳做法是什么。

提前致谢

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

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

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

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

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

persistentProperties.find { it.name == nameToSearchFor }

最后我决定选择

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

我认为这个解决方案比@Andrew von Dollen 的提议好不了多少,因为我避免使用 spring 上下文...感觉这样更时髦。