我有我的页面上选择多。用户可以将元素添加到列表中,并选择一个或多个删除它们。选择多个,获得选择的值和非选择的值
当我打通params.selectName选择的价值,我只接收选定的。我明白,这是默认行为,但我需要他们所有人,而不仅仅是选定的元素。
我真的不希望选择所有元素每次发送数据到服务器的时间。有没有人有更好的解决方案?谢谢。
我有我的页面上选择多。用户可以将元素添加到列表中,并选择一个或多个删除它们。选择多个,获得选择的值和非选择的值
当我打通params.selectName选择的价值,我只接收选定的。我明白,这是默认行为,但我需要他们所有人,而不仅仅是选定的元素。
我真的不希望选择所有元素每次发送数据到服务器的时间。有没有人有更好的解决方案?谢谢。
这是一个有点复杂的解决方案应该是什么一个简单的问题,但在我的当前项目,我们只是有同样的问题,并解决它作为@cdeszaq描述。
假设Foo
类的一个对象与Bar
项,其中每个Bar
具有String name
并将其输出作为其toString()
表示集合(bars
),我们这样做在FooController
:
def removedItems = fooInstance.bars.findAll {
!params.bars.collect { it.key }.contains(it.name)
}
if(removedItems){
removedItems.each {
fooInstance.removeFromBars(it)
}
}
该方法采用<g:checkBox>
标记是为了创建一个隐藏字段,其名称与复选框相同,但前面带有下划线。你可以在这里使用了类似的伎俩,即每当你添加新<option>
到<select>
您还添加了一个名为隐藏字段(说)selectName_options
具有相同的值。然后在控制器中,您可以取params.list('selectName')
和params.list('selectName_options')
之间的差异以从列表中获取未选定的选项。
既然你大概都在Grails的应用程序的价值,为什么不只是从数据库的完整列表进行比较选择的名单? – cdeszaq