我在我的应用程序中使用了grails generate-all
。 Author
视图具有多选,允许多个Book
个实例:
<g:select multiple="true" ... />
但是,如果我编辑现有的Author
拥有15本书中的5本(多选则显示15本书,5本已选中),取消选中所有书籍并点击保存,Author
仍然保留他们的5本书。据我所知,Author
的表格 - 书籍属性的书籍输入不会改变。
现在,我可以在我的控制器中测试这个(类似这样):
if (params?.books.size() < 1) {
authorInstance.books = []
}
这是方法吗,还是有更好的方法?
答案 0 :(得分:3)
我见过的大多数例子都使用了:
authorInstance.books.clear()
答案 1 :(得分:0)
我遇到了同样的问题,默认数据绑定无法清空多选列表,因为params
地图不包含值为NULL
的字段。
为了避免这种情况,您可以在.gsp
:
<g:hiddenField name="books" value="" />
<g:select multiple="true" name="books" />
发布此表单元素时,多重选择将覆盖隐藏字段。如果多重选择为空,您将回退到空字符串。
不太好,但是当你无法改变控制器动作时,就完成了工作。