2012-07-30 68 views
1

我想要的幫助很少,這是因爲我對Groovy語法缺乏瞭解。所以,這裏的東西:使用Groovy無法訪問params地圖

在GSP頁面我想設置從PARAMS地圖這是

["id":"107901", "Field_10.value":"2", "Field_10":["value":"2"],"Field_11.value":"", "Field_11":["value":""],action:'abc'] 

在GSP頁面字段的值,我想找到對關鍵Field_ {值一些-ID} .value的

所以我呼籲對其實施像,g.testTag(id:field.id)標籤爲

def testTag = { attrs,body-> 

    println "params are ${params}" 
    def result = "" 
    def keyRequired = "Field_${attrs.id}.value" 
    println "keyRequired >>>>> ${keyRequired.toString()}" 
    params.each { key,value-> 
     println "key is ${key}" 
     println "Value is ${value}" 
     if (key.equals(keyRequired.toString())) { 
      result = params.value 
     } 
    } 
    println "Final result is >>>>>> ${result}" 
} 

在ID中傳遞的值爲10,與我的PARAMS打印爲ABO我期待值爲 的2,這對應於參數中的關鍵字出現。但顯然我看到 結果爲空。

我在做什麼錯?任何人都可以幫助,請...

感謝

回答

1

你必須改變行:

result = params.value 

到:

result = value 

在每個循環,你基本上說,PARAMS迭代裏面,你命名每一個關鍵「關鍵「和每個值」價值「。所以,params.value實際上會查找params map中的鍵值,該值是null。

有趣的是,你用鑰匙做到了這一點,但沒有價值。可能只是分心。

+0

謝謝@Tiago。只是沒有注意到.. – 2012-07-30 14:53:32

2

result = params.value,但result = value

+0

沒有維克多。 params.id = 107901然而我想要10 – 2012-07-30 14:07:42

+0

哦,是的。但無論如何,可以肯定的是,你能否也請打印'attrs'? – 2012-07-30 14:11:43

+0

當然, attrs = [id:10]。 – 2012-07-30 14:14:44

1

很可能你想要做什麼,在常規的方式(不需要遍歷地圖的鍵)來訪問"Field_10.value":"2"

result=params["Field_${attrs.id}.value"] 

另外,這也是可行的,因爲你在你的地圖有"Field_10":["value":"2"]

result=params["Field_${attrs.id}"].value