首页 文章

Groovy:列出动态属性

提问于
浏览
0

如果我有一个GORM持有的对象和Mongo中的集合它引用了更改,我该如何列出这些属性?例如(不是我的实际用例),我有一个名为Toy的类,它有字段名称和价格,然后有人将制造商添加到数据库而不是代码......

class Toy {
  String name
  Double price
}

class SomeController {
  def show() {
    def Toy t
    t = Toy.get(1)
    render t['manufacturer'] 
  }
}

t ['制造商']工作正常 . 无论类的字段定义如何,调用加载数据库中的所有属性,但是我(对Groovy来说很新)不知道如何列出这些可订阅的属性以了解某些内容是否已更改 .

2 回答

  • 0

    查看对象上的属性字段

    t.properties.each { prop, val ->
      println "Property: $prop $val"
    }
    

    但请注意,“metaClass”和“class”总是被groovy放在那里 . groovy中常见的一个例子是:

    foo.properties.each { prop, val ->
        if(["metaClass","class"].find {it == prop}) return
        // else do something with the property or value
    }
    
  • 0

    我猜你真正想要的是在底层mongo数据库实体中设置的动态属性 .

    请执行以下操作以获取其姓名:

    def nativePropertyNames = domainInstance.dbo.keySet()
    

    如果你只想要动态属性,这将有所帮助:

    def dynamicPropertyNames = domainInstance.dbo.keySet() - "_id" - domainInstance.properties.keySet()
    

相关问题