Правильно передать Groovy список в код Javascript в GSP - PullRequest
5 голосов
/ 14 января 2010

Я делаю веб-приложение с Grails.У меня есть список с данными, которые должны быть включены в JavaScript для выполнения некоторой динамической загрузки в <select> раскрывающемся списке.По сути, я получаю двухуровневый список с сервера, затем первый уровень отображается в выпадающем списке.Когда пользователь выбирает параметр, список, связанный с этим параметром, отображается в другом раскрывающемся списке.

(упрощенный) код на странице gsp для функции JavaScript:

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

Проблема в том, что если typeList определен (в Groovy) как

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 )

, что является ошибочным, как JavaScriptобрабатывается тогда не как строки, а как ссылки из-за отсутствия кавычек.

Есть ли способ заставить Groovy напечатать список массивов с кавычками или любой другой простой способ добиться этого?

PD: я могу сделать определенную функцию для ее достижения, но я думаю, что это должен быть простой способ сделать это ...

РЕДАКТИРОВАТЬ: Я добавил полную структуру данныхнемного сложнее, чем простой список

1 Ответ

9 голосов
/ 14 января 2010

Попробуйте это в действии вашего контроллера Grails:

def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON
[typeList : types]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...