Overriding grails.views.default.codec='html' config back to 'none'

元气小坏坏 提交于 2019-11-26 12:56:06

问题


In Grails (<2.3), if I leave grails.views.default.code=\'none\' in the grails Config.groovy, it\'s up to me to HTML encode my expressions explicitly in the GSP files: ${myValue?.encodeAsHTML()}.

If I set grails.views.default.codec=\'html\" in the Config.groovy, then the HTML encoding happens automatically for every expression: ${myValue}.

My question: If I set the default to \'html\', how do I get back to \'none\' for one expression when I don\'t want the HTML encoding behavior?


回答1:


If default encoding level is set to html using

grails.views.default.codec = "html"

then for removing the html encoding for one expression in a page you can use

${raw(expression)}




回答2:


To summarize the various levels at which the codec can be applied:

Set Config.groovy's grails.views.default.codec='html' to get HTML escaping by default on all ${expressions} in the application.

Then when you want to default a whole page back to none, use the directive:

<%@page defaultCodec="none" %>

or

<%@ defaultCodec="none" %>

To disable HTML encoding for one expression in a page that is otherwise defaulting to HTML, use <%=expression%> notation instead of ${...}.




回答3:


Try using ${raw(myValue)} , you do not need to declare page codecs etc




回答4:


From GRAILS-1827, it looks like you can override the default codec for a specific page with

<%@ defaultCodec="HTML" %>

or

<%@page defaultCodec="HTML" %>

in some versions (see the referenced issue).




回答5:


I may have a solution. I'm not sure how accepted it is, though.

I can set the default codec for expressions to HTML, but then use <%=myValue%> notation in GSP instead of ${} expressions to get the unescaped values onto the page.




回答6:


Write your own tag and write the expression direct to the output stream:

class YourTagLib {

    static namespace = "x"

    def unescaped = { attrs, body ->
        out << attrs.value
    }

}

Use it in your GSP:

<x:unescaped value="${yourexpression}"/>


来源:https://stackoverflow.com/questions/1337464/overriding-grails-views-default-codec-html-config-back-to-none

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!