使用Grails和场景是如果我有一个从HTTP请求传入的对象,我遍历该对象并获取所有可能的对象,如:
if (params.colors) {
for (String color in params.colors) {
println color
}
}
Run Code Online (Sandbox Code Playgroud)
如果传入[Ljava.lang.String(即params.colors = ["blue","green","yellow"]),那么您的输出是预期的:
blue
green
yellow
Run Code Online (Sandbox Code Playgroud)
但是如果params.colors ="blue",那么当然,groovy将标记为"蓝色",你将得到输出:
b
l
u
e
Run Code Online (Sandbox Code Playgroud)
我想我应该检查它是否已经是一个数组.除非我接近这个错误或者有一种常规的做法.
您可以使用对象list上的方法将颜色参数作为列表访问params:
for (String color in params.list('colors')) {
println color
}
Run Code Online (Sandbox Code Playgroud)
这样,如果你的动作被调用就好/your_action?colors=red或者/your_action?colors=red&colors=green甚至没有颜色参数都没关系(这就是为什么我遗漏了if),params.list('colors')总会返回一个列表:)