我的问题是将Map对象从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={"0":"Failure","1":"Poor"}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
实际上有几种处理GSP编码的方法。除了D. Kossatz的答案,这些方法将帮助你(更多信息见mrhaki's excellent Grails Goodness blog)
var scoreValue=${raw(scoreValue)};
var scoreValue=${scoreValue.encodeAsRaw()}
请注意,在页面上呈现未受保护的用户输入时,存在跨站点脚本漏洞的固有风险。只要您知道某些,只有您可以设置该值,并进行适当的安全检查以确保它符合预期,您应该没问题。
答案 1 :(得分:1)
尝试:
var scoreValue= <g:applyCodec encodeAs="none">${scoreValue}</g:applyCodec>;