繁体   English   中英

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

[英]Thymeleaf print JSON string as JSON object into a javascript variable

在具体

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

详细地

我有一个model attribute ,其中包含一个字符串,实际上是JSON的字符串表示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执行此操作,但我需要一种方法来执行此操作来自thymeleaf :)

更新 - 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. 使用Jackson进行JSON#81的Javascript内联

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

主要特点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM