2

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

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

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

params.list("receiptItemsSelected")

但如果我在多选中选择两个项目,它不会给我两个元素,但总是一个元素。问题是:如果我选择两个元素,如何获取每个元素并在控制器中使用它?我怎样才能将这些元素设为 Long 而不是 String?谢谢

4

2 回答 2

7

如果您正在使用列表的字符串表示形式传递参数,例如:

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()
于 2013-07-02T14:12:31.407 回答
0

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

receiptItemsSelected=1&receiptItemsSelected=2

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

于 2013-07-02T08:36:25.860 回答