gpt4 book ai didi

Grails:如何以编程方式将命令对象数据绑定(bind)到服务中的域对象?

转载 作者:行者123 更新时间:2023-12-01 10:40:52 26 4
gpt4 key购买 nike

我有一个命令对象,我想将其转换为域对象。

但是,我想将命令对象转换成的对象可能是两个域类之一(它们都是派生类),我需要在服务中进行(这是基于其他数据的地方,我决定它应该绑定(bind)到哪种类型的对象)。这可能吗?最好的方法是什么? bindData() 仅存在于 Controller 中。

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

最佳答案

如果参数同名,那么可以使用this question复制值。快速总结如下。

使用 Grails API

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

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

然后您可以检查该属性是否存在于其他对象中。

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

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

使用共享资源

Spring 有一个非常好的实用程序类,称为 BeanUtils,它提供了一个通用的复制方法,这意味着您可以做一个简单的单行代码。

BeanUtils.copyProperties(object, otherObject);

这将在名称相同的地方复制值。您可以查看文档 here .

否则..

如果它们之间没有映射,那么您就会陷入困境,因为引擎不知道如何比较它们,所以您需要手动进行比较。

关于Grails:如何以编程方式将命令对象数据绑定(bind)到服务中的域对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com