处理多选而没有选择

时间:2011-12-07 09:04:34

标签: grails

我在我的应用程序中使用了grails generate-allAuthor视图具有多选,允许多个Book个实例:

<g:select multiple="true" ... />

但是,如果我编辑现有的Author拥有15本书中的5本(多选则显示15本书,5本已选中),取消选中所有书籍并点击保存,Author仍然保留他们的5本书。据我所知,Author的表格 - 书籍属性的书籍输入不会改变。

现在,我可以在我的控制器中测试这个(类似这样):

if (params?.books.size() < 1) {
     authorInstance.books = []
}

这是方法吗,还是有更好的方法?

2 个答案:

答案 0 :(得分:3)

我见过的大多数例子都使用了:

authorInstance.books.clear()

答案 1 :(得分:0)

我遇到了同样的问题,默认数据绑定无法清空多选列表,因为params地图不包含值为NULL的字段。

为了避免这种情况,您可以在.gsp

中执行此操作
<g:hiddenField name="books" value="" />
<g:select multiple="true" name="books" />

发布此表单元素时,多重选择将覆盖隐藏字段。如果多重选择为空,您将回退到空字符串。

不太好,但是当你无法改变控制器动作时,就完成了工作。