以下代码中发生了奇怪的事情。我成功创建了一个 map ,并且如输出所示,我具有键和值,但是无法使用键检索值。

请参见下面的代码和输出:

class HomeController {

def index() {
    List gs=Gizmo.getAll()
   def gizmoList= gs.collectEntries {
        [(it.id): (it.name)]
    }


    println "item 2 is ${gizmoList['2']}"

    println "item 2  is ${gizmoList[2]}"
    println "keyset is " + gizmoList.keySet().toList().toString()
    println "values are" + gizmoList.values().toList().toString()
    [myList: gizmoList ]
 }
}

控制台输出为:
item 2 is null
item 2  is null
keyset is [1, 2, 3]
values are[flange, nork, prule]

我以某种方式认为这些键可能是GStringImpl之类的,但是我认为放置括号会强制转换为纯字符串。

最佳答案

在Grails中,idLong,因此找不到您的StringInteger密钥。

此代码段有效:

assert "item 2  is ${gizmoList[2l]}" == "item 2  is nork"

10-07 17:07