45

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

如果我grails.views.default.codec='html"在 Config.groovy 中设置,那么 HTML 编码会自动为每个表达式发生:${myValue}.

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

4

6 回答 6

64

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

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

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

<%@page defaultCodec="none" %>

或者

<%@ defaultCodec="none" %>

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

于 2009-11-18T12:02:27.880 回答
8

如果默认编码级别设置为 html 使用

grails.views.default.codec = "html"

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

${原始(表达式)}

于 2015-03-30T12:37:12.990 回答
7

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

于 2015-02-01T00:06:06.757 回答
5

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

<%@ defaultCodec="HTML" %>

或者

<%@page defaultCodec="HTML" %>

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

于 2009-11-17T18:37:40.947 回答
1

我可能有一个解决方案。不过,我不确定它的接受程度如何。

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

于 2009-08-27T12:08:18.373 回答
1

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

class YourTagLib {

    static namespace = "x"

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

}

在您的 GSP 中使用它:

<x:unescaped value="${yourexpression}"/>
于 2014-02-26T20:07:15.617 回答