Я делаю веб-приложение с Grails. У меня есть список с данными, которые должны быть включены в JavaScript для выполнения некоторой динамической нагрузки на <select>
список отбрасывания. В основном я получаю два списка уровня от сервера, затем первый уровень представлен на поле отбрасывания. Когда пользователь выбирает опцию, список, связанный с этой опцией, представлен на другом поле отбрасывания.
(Упрощенный) код на gsp странице для функции JavaScript следующий
function selecTipe() {
var types = ${typeList}
alert('List of types ' + types )
Проблема - это, если список типов определяется (в Groovy) как
typeList = [['TYPE1', ['VAR1','VAR2','VAR3']],
['TYPE2', ['VAR1','VAR2','VAR3']]
['TYPE3', ['VAR1','VAR2','VAR3']] ]
когда страница является renderized, код 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: Я могу сделать определенную функцию для достижения его, но я думаю, что это должен быть простой способ сделать это...
Править: Я добавил полную структуру данных, как немного более сложно, чем простой список
Попробуйте это в действии контроллера Grails:
def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON
[typeList : types]