0

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

javascript.js

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

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

标记控制器.groovy

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

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

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

4

2 回答 2

3

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

的这种性质在这里params被解释为类型转换

于 2013-09-05T20:47:40.797 回答
1

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

您可以尝试使用jsonData请求的选项而不是params. 如果您的框架接受 JSON,则数据的类型将得到更好的尊重。

于 2013-09-05T20:22:18.323 回答