Grails/Groovy - 域对象 - 其属性的映射

Bud*_*Joe 7 reflection dns grails groovy metaprogramming

如何在我的某个域对象上获取仅用户定义属性的键/值的映射?

问题是,如果我自己这样做,我得到我的属性加上类,metaClass,约束,闭包等...

我认为Grails可以相当容易地做到这一点,因为它在脚手架代码中的某个层次完成了吗?我怎么能自己做?

Ale*_*uch 10

试试这个

class Person{
    String name
    String address
}

def filtered = ['class', 'active', 'metaClass']

def alex = new Person(name:'alex', address:'my home')

def props = alex.properties.collect{it}.findAll{!filtered.contains(it.key)}

props.each{
    println it
}
Run Code Online (Sandbox Code Playgroud)

它也可以使用alex.metaClass.surname = 'such'.此属性将显示在每个循环中