Grails / Groovy-领域对象-其属性图

|| 如何获得仅一个域对象上用户定义的属性的键/值的映射? 问题是如果我自己这样做,我会得到我的属性以及类,metaClass,约束,闭包等。 我认为Grails可以很容易做到这一点,因为它是在脚手架代码中的某个级别完成的,对吗?我自己该怎么办?     
已邀请:
        尝试这个
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
}
如果您使用ѭ1also,也可以使用。该属性将显示在每个循环中     
        这是一个古老的问题,但是我只是遇到了这个要求,发现了另一个解决方案,对于遇到此问题的其他人,这里值得回答。我根据该线程整理了一个示例: 样品豆
class SampleBean {

    long id
    private String firstName
    String lastName
    def email

    Map asMap() {
        this.class.declaredFields.findAll { !it.synthetic }.collectEntries {
            [ (it.name):this.\"$it.name\" ]
        }
    }
}
测试班
class Test {

    static main(args) {
        // test bean properties
        SampleBean sb = new SampleBean(1,\'john\',\'doe\',\'jd@gmail.com\')

        println sb.asMap()
    }

}
SampleBean
我在各个字段中显示了它的工作原理,这是println的输出:
[id:1, firstName:john, lastName:doe, email:jd@gmail.com]
    
        我认为最好的方法是在域对象上使用.properties来获取grails中的字段的映射,并在grails 2.1中进行了测试
class Person{
String firstName
String lastName

} 
def person=new Person()
person.firstName=\"spider\"
person.lastName=\"man\"
def personMap=person.properties 
    

要回复问题请先登录注册