2010-01-14 66 views
5

我正在用Grails製作Web應用程序。我有一個列表,其中包含必須包含在JavaScript中的數據以執行<select>下拉列表中的一些動態加載。基本上,我從服務器獲取兩級列表,然後第一級顯示在下拉框中。當用戶選擇一個選項時,與該選項關聯的列表將出現在另一個下拉框中。正確地將Groovy列表傳遞給GSP中的Javascript代碼

爲JavaScript函數的GSP頁面上的(簡化的)碼下面

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

的問題是,如果類型串被定義(在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) 

這是錯誤的,因爲Java腳本不作爲字符串處理,而是作爲缺少引號的引用。

有什麼辦法可以強制Groovy使用引號或任何其他簡單的方法來打印數組列表來實現這個目標嗎?

PD:我可以做一個特定的功能來實現它,但我認爲它應該是一個簡單的方法來做到這一點...

編輯:我已經添加了完整的數據結構,是在你的Grails控制器的動作有點不是一個簡單的列表更復雜

回答

8

試試這個:

def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON 
[typeList : types] 
+1

它完美!即使是更復雜的陣列。 – Khelben 2010-01-14 14:23:00

相關問題