使用 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
我想我应该检查它是否已经是一个数组。除非我接近这个错误或者有一种时髦的方式来做到这一点。
最佳答案
您可以使用 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')
将始终返回一个列表:)
关于grails - 迭代可能是字符串或字符串数组的 Groovy 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372122/