我的页面上有一个选择多个。用户可以将元素添加到列表中并选择一个或多个删除它们。
当我通过 params.selectName 获得选择的值时,我只收到选择的值。我知道这是默认行为,但我需要所有这些,而不仅仅是选定的元素。
每次向服务器发送数据时,我都不想选择所有元素。有没有人有更好的解决方案?谢谢。
我的页面上有一个选择多个。用户可以将元素添加到列表中并选择一个或多个删除它们。
当我通过 params.selectName 获得选择的值时,我只收到选择的值。我知道这是默认行为,但我需要所有这些,而不仅仅是选定的元素。
每次向服务器发送数据时,我都不想选择所有元素。有没有人有更好的解决方案?谢谢。
标记采用的方法<g:checkBox>
是创建一个与复选框同名但带有下划线的隐藏字段。您可以在这里使用类似的技巧,即每当您添加一个新<option>
的到时,<select>
您还添加一个名为(比如说)selectName_options
具有相同值的隐藏字段。然后在控制器中,您可以区分params.list('selectName')
和params.list('selectName_options')
从列表中获取未选择的选项。
对于应该是一个简单的问题,这有点复杂,但是在我当前的项目中,我们遇到了同样的问题,并按照@cdeszaq 的描述解决了它。
假设一个类的对象有一个项目的Foo
集合(bars
Bar
Bar
String name
toString()
FooController
def removedItems = fooInstance.bars.findAll {
!params.bars.collect { it.key }.contains(it.name)
}
if(removedItems){
removedItems.each {
fooInstance.removeFromBars(it)
}
}