在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'
?
答案 0 :(得分:64)
总结可以应用编解码器的各个级别:
设置Config.groovy的grails.views.default.codec='html'
以默认在应用中的所有${expressions}
上转义HTML。
然后,如果要将整个页面默认为无,请使用指令:
<%@page defaultCodec="none" %>
或
<%@ defaultCodec="none" %>
要对页面中的一个表达式禁用HTML编码,否则默认为HTML,请使用<%=expression%>
表示法而不是${...}
。
答案 1 :(得分:8)
如果使用
将默认编码级别设置为htmlgrails.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}"/>