4

使用 Grails 的场景是,如果我有一个从 HTTP 请求传入的对象,并且我遍历该对象并获取所有可能的对象,如下所示:

if (params.colors) {
  for (String color in params.colors) {
    println color
  }
}

如果传入 [Ljava.lang.String (即 params.colors = ["blue","green","yellow"]),那么您的输出与预期的一样:

blue
green
yellow

但是如果 params.colors = "blue",那么当然,groovy 会标记 "blue",你会得到输出:

b
l
u
e

我想我应该检查它是否已经是一个数组。除非我正在接近这个错误或者有一种时髦的方式来做到这一点。

4

1 回答 1

10

list您可以使用对象上的方法将颜色参数作为列表访问params

for (String color in params.list('colors')) {
  println color
}

这样,无论您的操作是否被称为类似/your_action?colors=red/your_action?colors=red&colors=green什至根本没有颜色参数(这就是我省略了的原因if),params.list('colors')都将始终返回一个列表:)

于 2013-01-17T04:40:26.340 回答