[英]Correctly pass a Groovy list to Javascript code in GSP
我正在用Grails制作一個Web應用程序。 我有一個列表,其中包含必須包含在JavaScript中的數據,以便在<select>
drop-list上執行一些動態加載。 基本上,我從服務器獲得一個兩級列表,然后第一級顯示在一個下拉框中。 當用戶選擇一個選項時,與該選項關聯的列表將顯示在另一個下拉框中。
JavaScript函數的gsp頁面上的(簡化)代碼如下
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:我可以做一個特定的功能來實現它,但我認為這應該是一個簡單的方法...
編輯:我添加了完整的數據結構,比簡單的列表更復雜
在grails控制器的操作中嘗試這個:
def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON
[typeList : types]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.