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

Joh*_*ugh 44 grails groovy encoding expression gsp

在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','none'当我不想要HTML编码行为时,如何返回一个表达式?

Joh*_*ugh 64

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

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

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

<%@page defaultCodec="none" %>
Run Code Online (Sandbox Code Playgroud)

要么

<%@ defaultCodec="none" %>
Run Code Online (Sandbox Code Playgroud)

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

  • 此解决方案不再有效.相反,您需要使用'raw'方法:`$ {raw(expression)}` (9认同)
  • @AJBrown如果你还在使用<2.3;仍然有用 (2认同)

小智 8

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

grails.views.default.codec ="html"

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

$ {原始(表达)}


小智 7

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


Jea*_*ash 5

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

<%@ defaultCodec="HTML" %>
Run Code Online (Sandbox Code Playgroud)

或者

<%@page defaultCodec="HTML" %>
Run Code Online (Sandbox Code Playgroud)

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