Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取Grails域对象中声明的属性?_Grails_Groovy - Fatal编程技术网

如何获取Grails域对象中声明的属性?

如何获取Grails域对象中声明的属性?,grails,groovy,Grails,Groovy,我正在尝试将Grails域对象转换为Map。我有一个代码,它使用ApacheCommonsBeanutils'为POGO做这件事。然而,在域对象上使用相同的代码是行不通的,因为Grails框架添加了所有内容。我希望能够将任何对象转换为只包含声明字段的映射,就像Grails将域对象转换为JSON一样。哪些功能可以帮助我实现这一点?我建议在您的域类中使用类似的功能: public Map asMap() { this.class.declaredFields.findAll

我正在尝试将Grails域对象转换为Map。我有一个代码,它使用ApacheCommonsBeanutils'为POGO做这件事。然而,在域对象上使用相同的代码是行不通的,因为Grails框架添加了所有内容。我希望能够将任何对象转换为只包含声明字段的映射,就像Grails将域对象转换为JSON一样。哪些功能可以帮助我实现这一点?

我建议在您的域类中使用类似的功能:

    public Map asMap() {
        this.class.declaredFields.findAll { !it.synthetic }.collectEntries {
          [ (it.name):this."$it.name" ]
        }
    }

关于同一个问题还有其他问题,你试过这个吗

domainObject.domainClass.persistedProperties
能让您更接近吗?它可以,但我正在寻找一种更通用的解决方案,可以(几乎)在应用程序中的任何Groovy对象上工作。类似于绕过Groovy和Grails添加的所有功能。由于处理属性的方式不同,您不确定是否可以。。。groovy的方式(afair)是做一些类似于
domainObject.class.declaredFields.findAll{!it.synthetic}.name的事情
,但我不确定这将如何处理Grails域类或动态添加的属性。我将对此进行测试。有没有一种方法可以创建一个临时域类来进行测试?像
classmyclass这样的东西会实现GrailDomainClass
吗?我想创建一个规范,当我的任何实际域类发生更改时,它不会受到影响。