在 Velocity 中包含文字 JSON 内容(避免 HTML 转义)

Posted

技术标签:

【中文标题】在 Velocity 中包含文字 JSON 内容(避免 HTML 转义)【英文标题】:Including literal JSON content in Velocity (avoiding HTML escapes) 【发布时间】:2012-05-30 05:02:21 【问题描述】:

我正在尝试使用 Atlassian 产品中嵌入的 Velocity 引擎(并通过 com.atlassian.templaterenderer 公开)将 JSON 值替换为模板。

在模板中,这看起来有点像以下:

<script>
  foo = $foo
</script>

但是,当我使用映射到字符串["bar", "baz"] 的“foo”渲染模板时,输出如下:

<script>
  foo = [&quot;bar&quot;, &quot;baz&quot;]
</script>

如何避免这种情况?

【问题讨论】:

【参考方案1】:

Atlassian 有一个事件处理程序,它对名称不以Withhtml 结尾的任何变量执行转义。

因此:

<script>
foo = $fooWithHtml
</script>

根据需要展开。

【讨论】:

【参考方案2】:

这不是默认行为,看起来您在 velocity.properties 或 java 初始化中注册了 EscapeHtmlReference 事件处理程序。有关事件处理程序的更多详细信息here。

【讨论】:

以上是关于在 Velocity 中包含文字 JSON 内容(避免 HTML 转义)的主要内容,如果未能解决你的问题,请参考以下文章

用代码方式制作一个网站,内容自选; 至少包含3个网页,网页中包含必要的文字或图像;

如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容

Spring Boot 在 json 中包含 ID 字段

在原始字符串文字中包含 )" 而不终止所述文字

velocity介绍及语法

Python setup.py 在 egg 中包含 .json 文件