Grails 基于表单输入的复杂层次结构更新

Grails 基于表单输入的复杂层次结构更新,grails,Grails,我试图理解处理基于Grails中表单数据的复杂对象层次结构的最佳方法 我不能使用命令对象,因为我的表单是动态的(用户可以添加任意数量的记录)。我被告知我们应该解析控制器中的参数,让服务在域对象上执行事务活动,从而减少耦合。有时这似乎并不简单 我在一个正在“更新”的基本域对象中有几个子域对象列表,这意味着该列表可能已增加或减少,这意味着需要添加/删除一些域元组。我如何将该信息从控制器传递到服务,而无需生成一个包含8个参数的函数?如果有人有你使用过的任何策略,请分享。我相信这并不罕见,但我还没有看到

我试图理解处理基于Grails中表单数据的复杂对象层次结构的最佳方法

我不能使用命令对象,因为我的表单是动态的(用户可以添加任意数量的记录)。我被告知我们应该解析控制器中的参数,让服务在域对象上执行事务活动,从而减少耦合。有时这似乎并不简单

我在一个正在“更新”的基本域对象中有几个子域对象列表,这意味着该列表可能已增加或减少,这意味着需要添加/删除一些域元组。我如何将该信息从控制器传递到服务,而无需生成一个包含8个参数的函数?如果有人有你使用过的任何策略,请分享。我相信这并不罕见,但我还没有看到任何关于这个问题的讨论

e、 g

类域a{
列表列表
列表客户端
域
}
类域{
列表列表列表
}

依赖ajax怎么样。您可以先保存classD,然后保存classa,或者使用命令对象来保存两者。然后使用这两个类的Id,您可以使用ajax添加您需要的所有其他内容


考虑一下你的例子。为什么不先保存域D作为第一步呢。然后您可以保存DomainA,因为您需要它的ID才能工作。保存DomainStation后,您将能够创建小ajax表单,将实例添加到bList、clist等。通过使用ajax,您每次保存的事实将对用户透明。它还可以让您和他们省去在出现故障时必须重新创建所有内容的痛苦,或者在事务中不断回滚的痛苦。一个bean。您可以使其可弯曲到实际的域类,也可以根据需要进行验证。最重要的是,它可以绑定参数,这些参数可以直接从控制器注册到服务。若服务中的问题失败了,那个么将bean从控制器传递回视图。看看我使用bean将婴儿车从控制器绑定到服务的一些插件
class DomainA {
    List<DomainB> bList
    List<DomainC> cList
    DomainD domD
}

class DomainD {
    List<DomainE> elist
}