当只有一个元素时,String数组只作为字符串传递给我的控制器

时间:2013-09-05 19:54:12

标签: javascript arrays extjs groovy

当我在数组中有多个元素时,它会将一个数组传递给我的控制器。但是如果数组中只有一个元素,它将它作为字符串传递给控制器​​而不是字符串数组。

javascript.js

var idArray = [];
idArray.push('testString');

Ext.Ajax.request({
  url: '/mark/fetch',
  params: {array: idArray}
});

markController.groovy

def fetch = {
  def idArray = params.array
  idArray.each{
    print it
  }
}

所以print it一次打印testString的每个字母而不是整个字符串。

如何确保idArray始终作为数组传递给控制器​​?

2 个答案:

答案 0 :(得分:3)

假设您在使用params时指的是Grails控制器,您可以尝试使用params.list('array')

params的这种性质被解释为here as Type Conversion

答案 1 :(得分:1)

它们在两种情况下都以字符串形式发送。这是解析逗号分隔值列表的框架,该列表将数组转换为字符串(try idArray.toString())。它可能基于请求的Content-Type标题执行此操作。

您可以尝试使用请求的jsonData选项,而不是params。如果您的框架接受JSON,则会更好地遵循数据类型。