2

我的页面上有一个选择多个。用户可以将元素添加到列表中并选择一个或多个删除它们。

当我通过 params.selectName 获得选择的值时,我只收到选择的值。我知道这是默认行为,但我需要所有这些,而不仅仅是选定的元素。

每次向服务器发送数据时,我都不想选择所有元素。有没有人有更好的解决方案?谢谢。

4

2 回答 2

0

标记采用的方法<g:checkBox>是创建一个与复选框同名但带有下划线的隐藏字段。您可以在这里使用类似的技巧,即每当您添加一个新<option>的到时,<select>您还添加一个名为(比如说)selectName_options具有相同值的隐藏字段。然后在控制器中,您可以区分params.list('selectName')params.list('selectName_options')从列表中获取未选择的选项。

于 2012-11-14T16:33:22.850 回答
0

对于应该是一个简单的问题,这有点复杂,但是在我当前的项目中,我们遇到了同样的问题,并按照@cdeszaq 的描述解决了它。

假设一个类的对象有一个项目的Foo集合(barsBarBarString nametoString()FooController

def removedItems = fooInstance.bars.findAll {
    !params.bars.collect { it.key }.contains(it.name)
}

if(removedItems){
    removedItems.each {
        fooInstance.removeFromBars(it)
    }
}
于 2012-11-14T16:24:40.133 回答