Thymeleaf печатает строку JSON как объект JSON в переменную javascript

В Конкретном

Мне нужен способ печати JSON представления строкового значения на страницу html через thymeleaf.

Подробнее

У меня есть model attribute, который содержит строку, которая на самом деле представляет собой строковое представление 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, но мне нужно сделать это из тимелеафа:)

Ответ 1

Обновление - 2015/12/24

Эта функция доступна в Thymeleaf 3

Обратитесь The Thymeleaf textual syntax в 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}"/];

Это невозможно в Thymeleaf 2. Как упоминает Patric LC, для этого есть две проблемы.

Ответ 2

@Faraj, новая версия Thymeleaf обеспечивает эту функциональность. Они реализуют функции для упомянутых вами проблем. Вы можете посмотреть здесь: http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

Основные возможности:

  • Три режима текстового шаблона: TEXT, JAVASCRIPT и CSS.
  • Новый синтаксис для элементов в режимах текстового шаблона: [# ...] ... [/].
  • Разрешены встроенные выходные выражения, обе экранированные ([[...]]) и unescaped ([(...)]).
  • Интеллектуальное экранирование JavaScript (как литералов) и CSS (в качестве идентификаторов).
  • Блоки комментариев (/*[- ... -]*/) на уровне анализатора (/*[- ... -]*/) и прототипа (/*[+ ... +]*/).
  • Настраиваемые шаблоны, применяемые к скриптам JAVASCRIPT и стилям CSS, с помощью обертывания элементов и/или выходных выражений внутри комментариев (/*[# ...]*/).