【问题标题】:How do I get declared properties in Grails domain objects?如何在 Grails 域对象中获得声明的属性?
【发布时间】:2015-02-24 13:24:03
【问题描述】:

我正在尝试将 Grails 域对象转换为 Map。我有一个使用 Apache Commons BeanUtils'PropertyUtils.describe 为 POGO 执行此操作的代码。但是,由于 Grails 框架添加的所有内容,在域对象上使用相同的代码是行不通的。我希望能够将任何对象转换为仅包含声明字段的 Map,就像 Grails 如何将域对象转换为 JSON 一样。哪些功能可以帮助我实现这一目标?

【问题讨论】:

  • domainObject.domainClass.persistedProperties 能拉近你的距离吗?
  • 它可以,但我正在寻找一种更通用的解决方案,它适用于(几乎)应用程序中的任何 Groovy 对象。类似于绕过 Groovy 和 Grails 添加的所有功能。
  • 不确定是否可以,因为处理属性的方式不同...... groovy 方式(公平)是做类似domainObject.class.declaredFields.findAll { !it.synthetic }.name 的事情,但我不确定这将如何与 Grails 一起使用域类或动态添加的属性
  • 我会测试一下。有没有办法创建一个临时域类只是为了测试?像class MyClass implements GrailsDomainClass 这样的东西会做吗?我想创建一个在我的任何实际域类发生更改时不会受到影响的规范。

标签: grails groovy


【解决方案1】:

我会在你的域类中建议这样的东西:

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

关于同样的问题还有其他问题,你试过了吗? Grails / Groovy - Domain Object - Map of its Properties

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多