2016-10-11 2 views
0

다음 코드에서 이상한 점이 있습니다. 성공적으로지도를 만들고 출력에 나와있는 것처럼 키와 값이 있지만 키 값을 검색 할 수 없습니다.Groovy Grails - 키로지도에서 값을 가져 오는 중 문제가 발생했습니다.

참조 코드와 아래 출력 :

item 2 is null 
item 2 is null 
keyset is [1, 2, 3] 
values are[flange, nork, prule] 

은 어떻게 든 내가 아마 키 GStringImpl 또는 뭔가를 생각하지만 일반 문자열로 강제 것입니다 주위에 괄호를 넣어 생각 :

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 ] 
} 
} 

콘솔 출력은 .

+0

'Gizmo' 오른쪽 도메인 클래스이다? –

+0

'println gizmoList.keySet() *. getClass() * .name' 키 유형을 쉽게 찾을 수 있습니다. GString을 맵 키로 사용하는 경우 중지합니다. Google은 문제의 원인에 대해 많은 토론을했습니다. http://www.groovy-lang.org/mailing-lists.html#nabble-td4511883 –

답변

1

Grails에서 idLong이므로 StringInteger 키를 찾을 수 없습니다.

이 조각 작품 :

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

네, 그게 전부입니다. 감사. – user1023110

0

잘 모르지만 그루비 웹 콘솔에서 비슷한 시도를했을 때 제대로 작동했습니다. 아래 첨부 참조 :

Similar code

따라서, 나에게 Grails의 또는 당신이 뭔가를 잘못하고있는 중 하나에 문제처럼 보인다. 한 번 더 시도하고 가능한 실수가 있는지 확인하십시오.

관련 문제