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

在Grails(<2.3)中,如果我在grails Config.groovy中留下了grails.views.default.code='none' ,那我可以直接在GSP文件中对我的expression式进行HTML编码: ${myValue?.encodeAsHTML()}

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

我的问题:如果我将默认值设置为'html' ,那么当我不需要HTML编码行为时,如何返回到'none'expression式?

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

grails.views.default.codec =“html”

然后删除一个页面中的一个expression式的HTML编码,你可以使用

$ {原始(expression)}

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

设置Config.groovy的grails.views.default.codec='html'来默认获取应用程序中所有${expressions} HTML转义。

那么当你想把整个页面默认为无效时,使用下面的指令:

 <%@page defaultCodec="none" %> 

要么

 <%@ defaultCodec="none" %> 

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

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

从GRAILS-1827 ,它看起来像你可以覆盖特定页面的默认编解码器

 <%@ defaultCodec="HTML" %> 

要么

 <%@page defaultCodec="HTML" %> 

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

我可能有一个解决scheme。 不过,我不确定它是如何被接受的。

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

编写自己的标签并直接写入输出stream:

 class YourTagLib { static namespace = "x" def unescaped = { attrs, body -> out << attrs.value } } 

在您的GSP中使用它:

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