【问题标题】:Thymeleaf print JSON string as JSON object into a javascript variableThymeleaf 将 JSON 字符串作为 JSON 对象打印到 javascript 变量中
【发布时间】:2015-06-26 08:02:17
【问题描述】:

具体

我需要一种通过 thymeleaf 将字符串值的 JSON 表示形式打印到 html 页面中的方法。

详细说明

我有一个model attribute,其中包含一个字符串,它实际上是JSON 的字符串表示形式

我的thymeleaf 代码

<script th:inline="javascript">
  var value = [[${data.scriptValue}]];
</script>

如下打印变量

var value = '[[\"asd\",\"3\"],[\"asd\",\"1\"],[\"asdasd\",\"1\"]]';

但我想要这样的东西作为javascript/JSON 数组

var value = [["asd","3"],["asd","1"],["asdasd","1"]];

如何在百里香中做到这一点?


注意:我知道我可以通过 JSON.Parse 做到这一点,但我需要通过百里香来做到这一点:)

【问题讨论】:

标签: java javascript json spring-mvc thymeleaf


【解决方案1】:

更新 - 2015/12/24

此功能在 Thymeleaf 3 中可用

https://github.com/thymeleaf/thymeleaf/issues/395中引用The Thymeleaf textual syntax

// Unescaped (actual answer)
var value = [(${data.scriptValue})];
//or
var value = [# th:utext="${data.scriptValue}"/];

// Escaped
var value = [[${data.scriptValue}]];
//or
var value = [# th:text="${data.scriptValue}"/];

这在 Thymeleaf 2 是不可能的。 正如 Patric LC 所提到的,报告了两个问题。

  1. unescaped inline for scripts/css #12

  2. Use Jackson for Javascript inlining of JSON #81

【讨论】:

    【解决方案2】:

    @Faraj,新版本的 Thymeleaf 提供了这个功能。他们为您提到的问题实现了功能。你可以看这里: http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

    主要特点:

    • 三种文本模板模式:TEXT、JAVASCRIPT 和 CSS。
    • 文本模板模式中元素的新语法:[# ...] ... [/]
    • 允许内联输出表达式,转义 ([[...]]) 和未转义 ([(...)])
    • JavaScript(作为文字)和 CSS(作为标识符)的智能转义。
    • 解析器级别的(/*[- ... -]*/) 和仅原型的(/*[+ ... +]*/) 注释块。
    • 通过在 cmets (/*[# ...]*/) 中包装元素和/或输出表达式,将自然模板应用于 JAVASCRIPT 脚本和 CSS 样式表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2016-07-16
      • 1970-01-01
      相关资源
      最近更新 更多