将地图从grails传递给javascript

时间:2016-05-31 13:28:05

标签: javascript json grails dictionary

我的问题是将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={&quot;0&quot;:&quot;Failure&quot;,&quot;1&quot;:&quot;Poor&quot;}

任何帮助将不胜感激。谢谢!

2 个答案:

答案 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>;