无法使用Groovy访问params地图

时间:2012-07-30 13:59:12

标签: grails groovy taglib

我想要的帮助很少,我怀疑是因为我对Groovy语法缺乏了解。所以,这就是事情:

在GSP页面上,我想从params地图设置一个字段的值

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

在gsp页面上,我想找到关键字Field_ {some-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,并且如上所示打印了我的参数,我期待一个值 2表示对应于参数中的键出现。但显然我看到了 结果为null ..

我做错了什么?任何人都可以帮忙...

谢谢

3 个答案:

答案 0 :(得分:2)

不是result = params.value,而是result = value

答案 1 :(得分:1)

你必须改变这一行:

result = params.value

为:

result = value

在每个循环中,你基本上都说在params迭代中,你命名每个键“key”和每个值“value”。因此,params.value实际上会查找params映射中的键值,该值为null。

有趣的是,你用钥匙做到了,但没有价值。可能只是分心了。

答案 2 :(得分:1)

很可能你想要做的事情,那种常规方式(不需要遍历地图的键)来访问"Field_10.value":"2"

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

或者,这也有效,因为您的地图中有"Field_10":["value":"2"]

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