2010-01-14 9 views
5

Estoy haciendo una aplicación web con Grails. Tengo una lista con los datos que deben incluirse en JavaScript para realizar alguna carga dinámica en la lista desplegable <select>. Básicamente, recibo una lista de dos niveles del servidor, luego el primer nivel se presenta en un buzón desplegable. Cuando el usuario selecciona una opción, la lista asociada a esta opción se presenta en otro cuadro desplegable.Pasa correctamente una lista de Groovy al código de Javascript en GSP

El (simplificado) código de la página SGP para la función de JavaScript es la siguiente

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

El problema es que, si typelist se define (en Groovy) como

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

cuando el página se renderiza, el código JavaScript aparece como

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

que es errónea, como Java La secuencia de comandos trata entonces no como cadenas, sino como referencias debido a la falta de comillas.

¿Hay alguna manera de forzar a Groovy a imprimir una lista de matrices con comillas u otra forma sencilla de lograr esto?

PD: Me pueden hacer una función específica para lograrlo, pero yo creo que debería ser una manera fácil de hacer eso ...

EDIT: He añadido la estructura de datos completa, como es un poco más complejo que una simple lista

Respuesta

8

Pruebe esto en acción su griales de controlador:

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

funciona perfectamente! Incluso con la matriz más compleja. – Khelben

Cuestiones relacionadas