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)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Grails 3 中更改每个插件的编解码器?

Android音频开发(三)——音频编解码

实时音频编解码之十七 Opus解码 SILK解码

Codecs系列转载:手淘H265编解码算法与工程优化

Codecs系列转载:手淘H265编解码算法与工程优化

实时音频编解码之十七 Opus解码 SILK解码