Grails 视图编解码器不工作 (2.4)
Posted
技术标签:
【中文标题】Grails 视图编解码器不工作 (2.4)【英文标题】:Grails View Codec Not Working (2.4) 【发布时间】:2014-07-24 07:34:42 【问题描述】:我试图在我的 gsp 中放入一个包含 & 符号的字符串,但我需要原样的 & 符号,而不是 html 化的版本,因为它被注入到一些 javascript 中。这是我尝试过的...
-
grails docs 表示 grails.views.default.codec 的默认值为“none”。那是错误的。它是“html”。
据说我可以通过使用 jsp 样式的标签让 grails 不转义字符串,即:
<%=mySafeHTMLString%>
Nope。
我可以通过再次使用<%@page defaultCodec="none" %>
Nope 来让 grails 不使用每页的默认代码。
简而言之,grails 文档一开始似乎是错误的,然后功能似乎被破坏了。还有什么我可以在这里尝试的吗?
我正在使用 grails 2.4。
【问题讨论】:
【参考方案1】:从 Grails 2.3 开始,所有 $ 表达式输出都会在 GSP 上自动转义。这非常有用,因为用户输入现在被转义,输入值中的任何 HTML 或 JavaScript 都被转义,浏览器不会将其解释为 HTML 或 JavaScript。这样做是为了保护我们的 Grails 应用程序免受跨站脚本 (XSS) 攻击。
但是,如果您需要原始值,您始终可以使用 raw()
或 encodeAsRaw()
。如:
raw(somethingFromModel)
somethingFromModel.encodeAsRaw()
<g:encodeAs codec="None">$somethingFromModel</g:encodeAs>
此外,您可以在 Config.groovy 中控制 GSP 的默认编码类型(一如既往)
grails.views.default.codec = "none" // this will emulate pre-2.3 behavior
【讨论】:
谢谢。原始位起作用了。但是 config.groovy 中的编解码器控件不起作用。 嗯,这很奇怪。到时候我会再研究一下。似乎在这里工作。 我必须更改配置变量grails.views.gsp.codecs.expression = "none"
才能正常工作。甚至raw(foo)
也没有这样做。以上是关于Grails 视图编解码器不工作 (2.4)的主要内容,如果未能解决你的问题,请参考以下文章