如何獲得我域對象之一的用戶定義屬性的鍵/值的映射?Grails/Groovy - 域對象 - 其屬性的映射
問題是,如果我這樣做我自己,我讓我的屬性加類,元類的限制,封鎖,等等
我認爲Grails能夠在一定程度上做到這一點很容易,因爲它是做腳手架代碼是否正確?我怎麼能自己做這個?
如何獲得我域對象之一的用戶定義屬性的鍵/值的映射?Grails/Groovy - 域對象 - 其屬性的映射
問題是,如果我這樣做我自己,我讓我的屬性加類,元類的限制,封鎖,等等
我認爲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
}
如果使用alex.metaClass.surname = 'such'
它也適用。此屬性將顯示在每個循環
這適用於普通的groovy類,但對grails域對象並不那麼簡潔,因爲grails域對象有額外的魔術纏繞在它們周圍,也會被打印。 – krock 2016-04-08 01:21:13
這是一個老問題,但我只是碰到這種要求跑,發現another solution是值得在這裏回答爲別人誰遇到這個線程。我已經把基於該線程的例子:
樣品豆
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','[email protected]')
println sb.asMap()
}
}
的SampleBean
我把各種領域,以表明它的工作原理,這是println的輸出:
[id:1, firstName:john, lastName:doe, email:[email protected]]
這適用於普通的groovy類,但對於grails域對象並不那麼整潔,因爲grails域對象有額外的魔術纏繞在它們周圍,也會被打印出來。 – krock 2016-04-08 01:21:01
這是你在追求什麼? http://stackoverflow.com/questions/4555150/gorm-persistent-properties – 2011-06-14 12:30:18
這正是我要建議的。顯然,你必須小心瞬態屬性。 – 2011-06-14 20:37:22