簡體   English   中英

正確地將Groovy列表傳遞給GSP中的Javascript代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM