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

时间:2009-08-26 21:01:20

标签: grails encoding groovy expression gsp

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

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

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

6 个答案:

答案 0 :(得分:64)

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

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

然后,如果要将整个页面默认为无,请使用指令:

<%@page defaultCodec="none" %>

<%@ defaultCodec="none" %>

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

答案 1 :(得分:8)

如果使用

将默认编码级别设置为html

grails.views.default.codec =&#34; html&#34;

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

<强> $ {原始(表达)}

答案 2 :(得分:7)

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

答案 3 :(得分:4)

GRAILS-1827开始,您可以使用

覆盖特定网页的默认编解码器
<%@ defaultCodec="HTML" %>

<%@page defaultCodec="HTML" %>

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

答案 4 :(得分:1)

我可能有一个解决方案。不过,我不确定它是多么被接受。

我可以将表达式的默认编解码器设置为HTML,但是然后使用&lt;%= myValue%&gt; GSP中的符号而不是$ {}表达式,用于将未转义的值放到页面上。

答案 5 :(得分:1)

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

class YourTagLib {

    static namespace = "x"

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

}

在您的GSP中使用它:

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