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

Far*_*ook 16 javascript java json spring-mvc thymeleaf

在具体

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

详细地

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

我的thymeleaf代码

<script th:inline="javascript">
  var value = [[${data.scriptValue}]];
</script>
Run Code Online (Sandbox Code Playgroud)

打印变量如下

var value = '[[\"asd\",\"3\"],[\"asd\",\"1\"],[\"asdasd\",\"1\"]]';
Run Code Online (Sandbox Code Playgroud)

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

var value = [["asd","3"],["asd","1"],["asdasd","1"]];
Run Code Online (Sandbox Code Playgroud)

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


注意:我知道我可以这样做,JSON.Parse但我需要一种方法来做到这一点来自百万美分:)

Far*_*ook 15

更新 - 2015/12/24

Thymeleaf 3中提供此功能

请参阅The Thymeleaf textual syntaxhttps://github.com/thymeleaf/thymeleaf/issues/395

// 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}"/];
Run Code Online (Sandbox Code Playgroud)

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

  1. unescaped inline for scripts/css#12

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


m.a*_*bin 5

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

主要特点:

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