2013-01-17 46 views
3

使用Grails和場景是,如果我有一個對象從HTTP請求中傳遞和我通過對象迭代並抓住所有可能的對象,如:遍歷一個Groovy的對象,其可以是字符串或字符串數​​組

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

如果[Ljava.lang.String在傳遞(即params.colors = 「藍色」, 「綠色」, 「黃色」]),那麼你的輸出爲預期:

blue 
green 
yellow 

但是,如果params.colors =「blue」,那麼當然,groovy會標記爲「藍色」,您將得到輸出:

b 
l 
u 
e 

我想我應該檢查它是否已經是一個數組。除非我正在接近這個錯誤,或者有一種很好的方式去做。

回答

8

可以使用list方法params對象訪問顏色PARAM作爲一個列表:

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

這樣,都不會有問題,如果你的動作被稱爲像/your_action?colors=red/your_action?colors=red&colors=green甚至沒有顏色參數(這就是爲什麼我忽略了if),params.list('colors')將永遠返回一個列表:)