簡體   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