使用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会将“蓝色”标记为“蓝色”并且你会得到输出:
b
l
u
e
我想我应该检查它是否已经是一个数组。除非我接近这个错误或者有一种常规的方法。
答案 0 :(得分:9)
您可以使用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')
将始终返回一个列表:)