简体   繁体   中英

passing map from grails to javascript

My problem is passing Map object from grails controller to JavaScript. I have the following code inside controller

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

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

I have been searching for solution and have got this link pass a groovy array to javascript code . but could not help.

What I did was change the return statement to

return (view:'viewname',model:[scoreValue:scoreValue as grails.converters.JSON]) and inside gsp view I have the following code.

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

But what i got inside html page is the following

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

any help would be appreciated. thanks!

There's actually a few ways of handling GSP encoding. In addition to D. Kossatz's answer, these methods will help you out (see more at mrhaki's excellent Grails Goodness blog )

 var scoreValue=${raw(scoreValue)};

 var scoreValue=${scoreValue.encodeAsRaw()}

Please be aware that there is an inherent risk of cross-site scripting vulnerabilities when rendering user input unprotected on the page. So long as you know for certain that only you can set that value, and proper safe-checks to ensure it is what it is supposed to be, you should be fine.

尝试:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM