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 で、上記のように出力された params では、params のキーに対応する 2 の値が表示されると予想していました。しかし、どうやら私は結果がnullとして表示されます..

私は何を間違っていますか?誰か助けてください...

ありがとう

4

3 に答える 3

2

ではなくresult = params.value、しかしresult = value

于 2012-07-30T14:03:48.073 に答える
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 に答える
1

次の行を変更する必要があります。

result = params.value

に:

result = value

each ループでは、基本的に、params 反復内で、すべてのキーに「キー」、すべての値に「値」という名前を付けていると言っています。そのため、params.value は実際には params マップ内のキー値を探しますが、これは null です。

値ではなくキーで正しく行うのはおかしいです。おそらく気が散っただけでしょう。

于 2012-07-30T14:30:43.557 に答える