如何解决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 举报,一经查实,本站将立刻删除。