以下代码中发生了奇怪的事情。我成功创建了一个 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中,id
是Long
,因此找不到您的String
和Integer
密钥。
此代码段有效:
assert "item 2 is ${gizmoList[2l]}" == "item 2 is nork"