覆盖 grails.views.default.codec='html'配置回到“无”

发布于 2024-08-03 05:37:51 字数 392 浏览 9 评论 0原文

在 Grails (<2.3) 中,如果我在 grails Config.groovy 中保留 grails.views.default.code='none' ,则由我在 GSP 文件中显式对表达式进行 HTML 编码:${myValue?.encodeAsHTML()}

如果我在 Config.groovy 中设置 grails.views.default.codec='html",则每个表达式都会自动进行 HTML 编码:${myValue}

。问题:如果我将默认值设置为 'html',当我不想要 HTML 编码行为时,如何返回到一个表达式的 'none'

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

北城孤痞 2024-08-10 05:37:51

总结一下可以应用编解码器的各个级别:

设置 Config.groovy 的 grails.views.default.codec='html' 以在所有 ${expressions} 上默认进行 HTML 转义 在应用程序中。

然后,当您想要将整个页面默认为无时,请使用指令:

<%@page defaultCodec="none" %>

<%@ defaultCodec="none" %>

要禁用页面中默认为 HTML 的一个表达式的 HTML 编码,请使用 <%=expression%> 符号而不是 ${...}

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 ${...}.

他是夢罘是命 2024-08-10 05:37:51

将默认编码级别设置为 html,

如果使用grails.views.default.codec = "html"

则要删除页面中一个表达式的 html 编码,您可以使用

<强>${raw(表达式)}

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)}

深居我梦 2024-08-10 05:37:51

尝试使用 ${raw(myValue)} ,您不需要声明页面编解码器等

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

烟雨凡馨 2024-08-10 05:37:51

GRAILS-1827 来看,您似乎可以使用以下命令覆盖特定页面的默认编解码器

<%@ defaultCodec="HTML" %>

<%@page defaultCodec="HTML" %>

在某些版本中(请参阅引用的问题)。

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).

帝王念 2024-08-10 05:37:51

我也许有解决办法。但我不确定它的接受程度如何。

我可以将表达式的默认编解码器设置为 HTML,然后使用 <%=myValue%> GSP 中的表示法而不是 ${} 表达式将未转义的值获取到页面上。

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.

陌路黄昏 2024-08-10 05:37:51

编写您自己的标记并将表达式直接写入输出流:

class YourTagLib {

    static namespace = "x"

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

}

在 GSP 中使用它:

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

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}"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文