2012-01-29 21 views
1

我只想從我的DomainModel的數據迭代List或Set。使用Set,列表的Grails + Javascript使用列表

for(var report in ${reportInstanceList.toSet()}) { 

     var postalcode= report.postalcode; 
     alert(postalcode); 

    } 

但我從Mozilla的總是得到: 「缺]之後元素列表」 ---->
「在[fire.report(VAR報告:4,fire.report:1, fire.report:5,fire.report:2,fire.report:3]){... 「

從歌劇: 」 語法在管線18錯誤而載入:語法錯誤 噸[fire.report :1,fire.report: -------------------- ^「

我也試過toList()。我試圖另一種語法,如: 「$ {reportInstanceList.toSet()}」 「$ {reportInstanceList.toSet()}」

但它不工作,它必須是一個小問題,但我不明白...

感謝

+0

您試圖將兩種語言混合使用,就好像它們在相同的環境中運行一樣。您必須呈現合法的JavaScript,它在客戶端計算機上運行,​​並且對Groovy或域對象一無所知。 – 2012-01-29 13:28:57

回答

0

我假設你正在嘗試寫一些JavaScript的GSP模板?如果是這樣,你需要你的Groovy對象轉換成你的JavaScript代碼可以使用,一般JSON工作:

<%! import grails.converters.JSON %> 

... 

    for(var report in ${reportInstanceList as JSON}) { 
    ... 

UPDATE:

原來的系列化工作得很好,但迭代陣列上是錯誤的。使用這樣的事情:

var reportsList = ${reportInstanceList as JSON}; 
for (var i=0; i<reportsList.length; i++) { 
    var report = reportsList[i]; 

    // do something with your report, e.g. 
    alert(report.postalcode); 
} 

你一般不應使用for (… in …)方法來遍歷數組。

+0

是的這就是正確的,但是當我稱之爲: ... 爲(VAR報告$ {reportInstanceList爲JSON}){ \t警報(report.postalcode); } ... 我得到「未定義」,所以他不明白變量「report」是Report.class的一個實例。我怎樣才能解決這個問題? 更多信息:所有的報表有一個郵編,我可以訪問它: $ {} reportInstance.postalcode好 – user1104836 2012-01-29 16:06:41

+0

,所以我們又回到@戴夫牛頓的評論:你想使用在JavaScript Groovy類?我恐怕這不會奏效。你可能會想共享數據對象,嘗試像'for(var postalcode in $ {reportInstanceList * .postalcode as JSON}){alert(postalcode); }' – 2012-01-29 17:13:47

+0

好的,我的錯。我沒有很好地解釋我的問題。我有一個reportInstanceList,這包含了很多reportInstances。每個reportInstance都包含一個變量:postalcode,street,number et.I要遍歷我的reportinstanceList並從每個ReportInstance獲取所有這些信息並將其保存到列表中 – user1104836 2012-01-29 18:29:15