Grails 如何使用域类中的属性子集填充Cmd对象?

Grails 如何使用域类中的属性子集填充Cmd对象?,grails,Grails,我正在开发基于webflow的工作流,在初始化操作期间,我试图从单个域类填充一组命令对象,每个命令对象仅包含域类中可用字段的子集。。。你可以看到很多领域 我正在努力解决的是如何用域类中匹配的属性填充每个命令对象的“属性” 有没有人有这方面的经验,知道如何做到这一点 谢谢 Dave您可以执行以下操作: class Domain { String lastName String firstName int age } class Command { String l

我正在开发基于webflow的工作流,在初始化操作期间,我试图从单个域类填充一组命令对象,每个命令对象仅包含域类中可用字段的子集。。。你可以看到很多领域

我正在努力解决的是如何用域类中匹配的属性填充每个命令对象的“属性”

有没有人有这方面的经验,知道如何做到这一点

谢谢


Dave

您可以执行以下操作:

class Domain {
    String lastName
    String firstName
    int age
}

class Command {
    String lastName
    int age
}

def domain = new Domain(lastName:'last', firstName:'first', age:33)

def command = new Command()
command.properties.findAll{ !["metaClass","class"].contains(it.key)}.each { k,v ->
   command[k] = domain[k]
}

assert 33 == command.age
assert 'last' == command.lastName    

.properties的问题在于它包括“类”和“元类”。设置这两个是个坏主意,所以他们被过滤掉了

您可以执行以下操作:

class Domain {
    String lastName
    String firstName
    int age
}

class Command {
    String lastName
    int age
}

def domain = new Domain(lastName:'last', firstName:'first', age:33)

def command = new Command()
command.properties.findAll{ !["metaClass","class"].contains(it.key)}.each { k,v ->
   command[k] = domain[k]
}

assert 33 == command.age
assert 'last' == command.lastName    

.properties的问题在于它包括“类”和“元类”。设置这两个是个坏主意,所以他们被过滤掉了

这是基于Grails的,所以我希望找到一个Groovy方法来完成这个问题。。不知道,也许人们并不总是接受答案:-)这是基于Grails的,所以我希望找到一种Groovy方法来解决这个问题。。不知道,也许人们并不总是接受答案:-)谢谢Stefan,这正是我在寻找的。谢谢Stefan,这正是我在寻找的。