grails controller:访问具有元素列表的参数

时间:2013-07-02 08:17:33

标签: list grails controller

我需要访问存储在参数中的项目,该参数表示多选中的所选元素。我使用以下代码将选定的项目从gsp传递给控制器​​到remoteFunction:

params: '\'receiptItemsSelected=\' + jQuery(this).val()'

现在,按照讨论here中的代码,我使用闭包来获取每个值,但是如果我执行多选,则 receiptItemsSelected 的大小始终为1,但值为例如, 1,2 。要将值作为列表获取,我在控制器中完成了以下操作

params.list("receiptItemsSelected")

但如果我在multiselect中选择两个项目,但它总是一个元素,它不会给我两个元素。 问题是:如果我选择两个元素,我如何获得每个元素并在控制器中使用它?我怎么能把那些元素当作长而不是字符串呢? 感谢

2 个答案:

答案 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()将其转换为您的列表,但您必须进行最后的StringLong转换:

def receiptsAsLongs = params.list('receiptItemsSelected')*.toLong()

答案 1 :(得分:0)

params.list()适用于多值参数,即如果您有

,它将起作用
receiptItemsSelected=1&receiptItemsSelected=2

使用serialize()而不是val()构建请求正文可能会有更多运气。