Grails提供了自动创建域对象并将其绑定到hasMany列表的功能,如grails用户指南中所述.
因此,例如,如果我的域对象"作者"具有许多"书籍"对象的列表,我可以使用以下标记(来自用户指南)创建和绑定它们:
<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" />
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果指定的任何书籍尚不存在,Grails将创建它们并适当地设置它们的标题.如果指定的索引中已有书籍,则会更新其标题并保存.我的问题是:是否有一些简单的方法可以告诉Grails从数据绑定的"书籍"协会中删除其中一本书?
最明显的方法是省略与要删除的域实例对应的表单元素; 不幸的是,根据用户指南,这不起作用:
然后Grails将在定义的位置自动为您创建一个新实例.如果你"跳过"中间的一些元素......那么Grails会自动在两者之间创建实例.
我意识到特定的解决方案可以设计为命令对象的一部分,或者作为特定控制器的一部分 - 但是,在我的应用程序中,跨多个域对象以及许多不同类型的对象的关联,对此功能的需求会反复出现.因此,一般的解决方案是理想的.有谁知道Grails中是否包含这样的内容?