2010-01-14 7 views
5

Grails로 웹 응용 프로그램을 만들고 있습니다. <select> 드롭 목록에 동적로드를 수행하기 위해 JavaScript에 포함되어야하는 데이터 목록이 있습니다. 기본적으로 서버에서 두 수준의 목록을 가져오고 첫 번째 수준은 드롭 상자에 표시됩니다. 사용자가 옵션을 선택하면이 옵션과 관련된 목록이 다른 드롭 상자에 표시됩니다.Groovy 목록을 GSP의 Javascript 코드로 올바르게 전달합니다.

자바 스크립트 함수의 GSP 페이지의 간체 코드

function selecTipe() { 
     var types = ${typeList} 
     alert('List of types ' + types) 

문제는 다음이다

그 typeList는

typeList = [['TYPE1', ['VAR1','VAR2','VAR3']], 
      ['TYPE2', ['VAR1','VAR2','VAR3']] 
      ['TYPE3', ['VAR1','VAR2','VAR3']] ] 

경우로 (그루비) 정의되면 페이지가 렌더 된 경우 JavaScript 코드는

function selecTipe() { 
     var types = [[ TYPE1, [ VAR1, VAR2, VAR3 ]], 
        [ TYPE2, [ VAR1, VAR2, VAR3 ]] 
        [ TYPE3, [ VAR1, VAR2, VAR3 ]] ] 
     alert('List of types ' + types) 

과 같이 나타나며, Java 스크립트는 문자열로 취급하지 않고 따옴표가 없기 때문에 참조로 사용합니다.

Groovy가 따옴표 나 다른 쉬운 방법으로 배열 목록을 인쇄하도록 강제 할 수있는 방법이 있습니까?

PD는 : 나는 특정 기능을 달성 할 수 있습니다,하지만 난 그게 그렇게 쉬운 방법이 있어야한다고 생각합니다 ...

편집이 : 내가, 전체 데이터 구조를 추가 한 그대로 간단한 목록보다 조금 더 복잡한

답변

8

당신의 Grails의 컨트롤러의 동작이 시도 : 그것은 완벽하게 작동

def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON 
[typeList : types] 
+1

! 더 복잡한 배열에서도. – Khelben

관련 문제