Pergunta

Estou fazendo um aplicativo da web com Grails. Eu tenho uma lista com dados que devem ser incluídos no JavaScript para executar alguma carga dinâmica em <select> lista de gota. Basicamente, estou recebendo uma lista de dois níveis do servidor e o primeiro nível é apresentado em uma caixa de gota. Quando o usuário seleciona uma opção, a lista associada a esta opção é apresentada em outra caixa de gota.

O código (simplificado) na página GSP para a função JavaScript é o seguinte

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

O problema é que, se a lista de digitação for definida (em groovy) como

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

Quando a página é renderizada, o código JavaScript parece como

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

O que é errôneo, pois o JavaScript trata não como cordas, mas como referências devido à falta de cotações.

Existe alguma maneira de forçar o Groovy a imprimir uma lista de matrizes com cotações ou qualquer outra maneira fácil de conseguir isso?

PD: Eu posso fazer uma função específica para alcançá -la, mas acho que deveria ser uma maneira fácil de fazer isso ...

EDITAR: Eu adicionei a estrutura de dados completa, como é um pouco mais complexo do que uma lista simples

Foi útil?

Solução

Experimente isso na ação do controlador do seu Grails:

def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON
[typeList : types]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top