2015-04-19 9 views
12

In SpecificThymeleaf Druck JSON-String als JSON-Objekt in eine JavaScript-Variable

brauche ich eine Art und Weise JSON Darstellung eines String-Wert in die HTML-Seite über thymeleaf zu drucken.

Im Detail

Ich bin ein model attribute, die eine Zeichenfolge enthält, die eigentlich eine String-Darstellung der JSON ist

Mein thymeleaf Code

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

Druck der Variablen wie unten

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

Aber ich möchte so etwas wie dies als javascript/JSON Array

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

Wie dies in thymeleaf tun?


Anmerkung: Ich weiß, ich kann dies von JSON.Parse tun, aber ich brauche eine Möglichkeit, diese von thymeleaf-Update :)

+0

Ich denke, das http://stackoverflow.com/questions/28633329/how-to-serialize-pojo-with-thymeleaf/28691655#28691655 und diese http://forum.thymeleaf.org/Spring-Javascript -und-escaped-JSON-td4024739.html würde helfen –

+0

Danke @PatrickLC Ich mache das tatsächlich im Moment, wie ich in der Frage erwähnt. Aber wird es nicht toll, eine direkte Methode in thymeleaf zu haben, dies zu tun wie 'th: utext' :) –

+1

stimme ich zu, dass etwas sinnvoll wäre, könnte man zwei verwandte Themen findet: https://github.com/thymeleaf/thymeleaf/issues/12 und https://github.com/thymeleaf/thymeleaf/issues/81 –

Antwort

10

zu tun - 2015/12/24

Diese Funktion ist in Thymeleaf 3

siehe The Thymeleaf textual syntax in https://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}"/]; 

Es ist nicht möglich, bei Thymeleaf 2. Als Patric LC erwähnt, gibt es zwei Ausgaben dafür ausgewiesen.

  1. unescaped inline for scripts/css #12

  2. Use Jackson for Javascript inlining of JSON #81

2

@Faraj, eine neue Version von Thymeleaf bietet diese Funktionalität. Sie implementieren Funktionen für die von Ihnen erwähnten Probleme. Sie können hier: http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

Die wichtigsten Eigenschaften:

  • Drei Textvorlage Modi: TEXT, JavaScript- und CSS.
  • Neue Syntax für Elemente in Textvorlagen-Modi: [# ...] ... [/].
  • Inline-Ausgabeausdrücke zulässig, beide maskiert ([[...]]) und unescaped ([(...)]).
  • Intelligent Entkommen von JavaScript (als Literale) und CSS (als Bezeichner).
  • Parser-Ebene (/*[- ... -]*/) und Prototyp-only (/*[+ ... +]*/) Kommentarblöcke.
  • Natur Vorlagen JavaScripts und CSS-Stylesheets mittels (/*[# ...]*/) innerhalb Kommentare Elemente und/oder Ausgabeausdrücke Verpackung aufgebracht.
+0

danke, dass Sie darauf hingewiesen haben. :) –