覆盖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}"/>