Grails:如何将编程命令对象数据绑定到服务中的域对象



我有一个要转换为域对象的命令对象。

但是,我想将命令对象转换为两个域类之一(它们都是派生的类)之一,我需要在服务中执行此操作(这是基于其他数据,我决定应绑定哪种类型的对象)。这是可能的,最好的方法是什么?bindData()仅存在于控制器中。

我是否只需要手动将命令对象参数映射到适当的域对象属性?还是有更快/更好的方法?

如果参数具有相同的名称,则可以使用此问题来复制该值。快速摘要可以如下。

使用Grails api

您可以通过访问类中的properties字段来循环浏览类中的属性。

object.properties.each { property -> 
    // Do something
}

然后,您可以检查该属性是否存在于另一个对象中。

if(otherObject.hasProperty(property) && !(key in ['class', 'metaClass']))

然后您可以将其从一个对象复制到另一个对象。

使用CONSONS

Spring有一个非常好的公用事业类,称为BeanUtils,它提供了一种通用复制方法,这意味着您可以执行Simlple Oneliner。

BeanUtils.copyProperties(object, otherObject);

将在名称相同的位置复制值。您可以在此处查看文档。

否则..

如果它们之间没有映射,那么您有点卡住,因为引擎不知道如何比较它们,因此您需要手动进行操作。

相关内容

  • 没有找到相关文章

最新更新