微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。