我需要访问存储在参数中的项目,该参数表示多选中的所选元素。我使用以下代码将选定的项目从gsp传递给控制器到remoteFunction:
params: '\'receiptItemsSelected=\' + jQuery(this).val()'
现在,按照讨论here中的代码,我使用闭包来获取每个值,但是如果我执行多选,则 receiptItemsSelected 的大小始终为1,但值为例如, 1,2 。要将值作为列表获取,我在控制器中完成了以下操作
params.list("receiptItemsSelected")
但如果我在multiselect中选择两个项目,但它总是一个元素,它不会给我两个元素。 问题是:如果我选择两个元素,我如何获得每个元素并在控制器中使用它?我怎么能把那些元素当作长而不是字符串呢? 感谢
答案 0 :(得分:5)
如果您正在使用列表的字符串表示传递参数,例如:
http://yoursite.com/?receiptItemsSelected=1,2,3
您必须使用普通的Groovy字符串操作拆分值并自行执行类型转换:
def receiptsAsLongs = params.receiptItemsSelected.split(',')*.toLong()
如果您的参数以重复参数的约定传递,则会生成一个列表,例如:
http://yoursite.com/?receiptItemsSelected=1&receiptItemsSelected=2
然后Grails可以使用params.list()
将其转换为您的列表,但您必须进行最后的String
到Long
转换:
def receiptsAsLongs = params.list('receiptItemsSelected')*.toLong()
答案 1 :(得分:0)
params.list()
适用于多值参数,即如果您有
receiptItemsSelected=1&receiptItemsSelected=2
使用serialize()而不是val()
构建请求正文可能会有更多运气。