2016-05-31 33 views
1

我的問題是將Map對象從grails控制器傳遞給JavaScript。 我有下面的代碼裏面控制器將地圖從grails傳遞到javascript

def scoreValue=new HashMap<String,String>(); 
scoreValue.put("0","poor"); 
scoreValue.put("1","good"); 
... 

return (view:'viewname',model:[scoreValue:scoreValue]); 

我一直在尋找解決方案,並已得到了這個鏈接pass a groovy array to javascript code。但沒有幫助。

我所做的是改變return語句

return (view:'viewname',model:[scoreValue:scoreValue as grails.converters.JSON]) 和GSP視圖中我有下面的代碼。

<g:if test="${scoreValue}"> 
    var scoreValue=${scoreValue}; 
</g:if> 

,但我得到了HTML頁面內是以下

var scoreValue={&quot;0&quot;:&quot;Failure&quot;,&quot;1&quot;:&quot;Poor&quot;} 

任何幫助,將不勝感激。謝謝!

回答

1

嘗試:

var scoreValue= <g:applyCodec encodeAs="none">${scoreValue}</g:applyCodec>; 
+0

這對我工作感謝。 – Mitiku

2

有實際的處理GSP編碼的幾種方法。除了D. Kossatz的答案,這些方法會幫助你(多見於mrhaki's excellent Grails Goodness blog

var scoreValue=${raw(scoreValue)}; 

var scoreValue=${scoreValue.encodeAsRaw()} 

請注意,沒有顯示在網頁上用戶輸入不受保護時,跨站點腳本漏洞的固有風險。只要你知道某些只有你可以設置這個值,並進行適當的安全檢查以確保它應該是什麼,你應該沒問題。

+0

當我按照你所說的那樣做了'var scoreValue = {0 = poor,1 = good}'。並顯示錯誤,因爲它考慮的是好的和差的變量而不是字符串。 – Mitiku