Thymeleaf 将 JSON 字符串作为 JSON 对象打印到 javascript 变量中

2022-09-02 01:26:53

具体

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

详细地

我有一个包含字符串的字符串,它实际上是model attributeJSON

我的代码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做到这一点。解析,但我需要一种方法来做到这一点从百里香:)

答案 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. 脚本/css 的未转义内联 #12

  2. 使用 Jackson 进行 JSON #81 的 Javascript 内联


答案 2

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

主要特点:

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