检查 属性 是否存在 属性 名称
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 上下文...感觉这样更时髦。
我想检查一个字符串是否包含我的实体 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 上下文...感觉这样更时髦。