1

我需要一点帮助,我怀疑这是由于我对 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 对应于显示的参数中的键。但显然我认为结果为空..

我究竟做错了什么 ?谁能帮忙请...

谢谢

4

3 回答 3

2

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

于 2012-07-30T14:03:48.073 回答
1

您必须更改行:

result = params.value

到:

result = value

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

有趣的是,您使用关键而不是价值正确地做到了这一点。大概只是分心了。

于 2012-07-30T14:30:43.557 回答
1

这可能是您想要做的,常规方式(无需遍历地图的键)来访问"Field_10.value":"2"

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

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

result=params["Field_${attrs.id}"].value
于 2012-07-31T06:55:22.400 回答