【发布时间】:2010-04-28 14:35:52
【问题描述】:
Grails 提供了自动创建域对象并将其绑定到 hasMany 列表的功能,如grails user guide 中所述。
因此,例如,如果我的域对象“作者”有一个包含许多“书”对象的列表,我可以使用以下标记(来自用户指南)创建和绑定这些对象:
<g:textField name="books[0].title" value="the Stand" />
<g:textField name="books[1].title" value="the Shining" />
<g:textField name="books[2].title" value="Red Madder" />
在这种情况下,如果指定的任何书籍尚不存在,Grails 将创建它们并适当地设置它们的标题。如果指定索引中已经有书籍,则它们的标题将被更新并被保存。我的问题是:是否有一些简单的方法可以告诉 Grails 从数据绑定的“书籍”关联中删除其中一本书?
最明显的方法是省略与您要删除的域实例对应的表单元素;不幸的是,根据用户指南,这不起作用:
然后Grails会自动创建 为您在定义的新实例 位置。如果你“跳过”了几个 中间的元素......然后是Grails 将自动创建实例 之间。
我意识到可以将特定的解决方案设计为命令对象的一部分,或者作为特定控制器的一部分——但是,在我的应用程序中、跨多个域对象和许多不同的关联时,对这个功能的需求反复出现对象的类型。因此,一个通用的解决方案将是理想的。有谁知道 Grails 中是否包含类似的东西?
【问题讨论】:
标签: data-binding grails groovy dns associations