2010-01-14 5 views
5

Je fais une application web avec Grails. J'ai une liste avec des données qui doivent être incluses sur JavaScript pour effectuer une charge dynamique sur la liste déroulante <select>. Fondamentalement, je reçois une liste à deux niveaux du serveur, puis le premier niveau est présenté sur une boîte de dépôt. Lorsque l'utilisateur sélectionne une option, la liste associée à cette option est présentée dans une autre boîte de dépôt.Passer correctement une liste Groovy au code Javascript dans GSP

Le (simplifié) code sur la page gsp pour la fonction JavaScript est le suivant

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

Le problème est que, si typeList est défini (Groovy) comme

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

lorsque la la page est rendue, le code JavaScript apparaît comme

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

qui est erronée, comme Java Le script traite alors non comme des chaînes, mais comme des références dues au manque de citations.

Existe-t-il un moyen de forcer Groovy à imprimer une liste de tableaux avec des guillemets ou tout autre moyen facile d'y parvenir?

PD: Je peux faire une fonction spécifique pour y parvenir, mais je pense que ce devrait être un moyen facile de le faire ...

EDIT: J'ai ajouté la structure de données complète, de même que un peu plus complexe qu'une simple liste

Répondre

8

Essayez ceci dans l'action de votre contrôleur Grails:

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

Il fonctionne parfaitement! Même avec le tableau plus complexe. – Khelben

Questions connexes