无法使用Groovy访问params映射



我几乎不需要帮助,我怀疑这是因为我对Groovy语法缺乏理解。所以,事情是这样的:

在GSP页面上,我想从的参数图中设置一个字段的值

 ["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,并且我的params如上所述打印,我期望得到一个值其中2对应于要显示的参数中的键。但显然我看到了结果为null。。

我做错了什么?有人能帮忙吗。。。

感谢

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

您必须更改行:

result = params.value

至:

result = value

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

有趣的是,你们用键做对了,但并没有用值。可能只是分心了。

这很可能是您想要做的,访问"Field_10.value":"2" 的groovy方式(无需在映射的键上循环)

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

或者,这也适用,因为你的地图中有"Field_10":["value":"2"]

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

最新更新