2015-04-19 14 views
12

Trong CụThymeleaf in JSON chuỗi như đối tượng JSON thành một javascript biến

Tôi cần một cách để in JSON đại diện của một giá trị chuỗi ký tự vào trang html qua thymeleaf.

Cụ thể

Tôi đang gặp một model attribute chứa một chuỗi mà thực sự là một chuỗi đại diện của JSON

thymeleaf Mã của tôi

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

in biến như sau

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

Nhưng tôi muốn một cái gì đó như thế này như là một mảng javascript/JSON

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

Làm thế nào để làm điều này trong thymeleaf?


Lưu ý: Tôi biết tôi có thể làm điều này từ JSON.Parse nhưng tôi cần một cách để làm điều này từ thymeleaf :)

+0

Tôi nghĩ rằng http://stackoverflow.com/questions/28633329/how-to-serialize-pojo-with-thymeleaf/28691655#28691655 và http://forum.thymeleaf.org/Spring-Javascript này -and-escaped-JSON-td4024739.html sẽ giúp –

+0

Cảm ơn @PatrickLC Tôi đang thực sự làm điều này vào lúc này như tôi đã đề cập trong câu hỏi. Nhưng nó sẽ không được tuyệt vời để có một phương pháp trực tiếp trong thymeleaf để làm điều này như 'th: utext' :) –

+1

Tôi đồng ý rằng sẽ là một cái gì đó hữu ích, bạn có thể tìm thấy hai vấn đề liên quan: https://github.com/thymeleaf/thymeleaf/issues/12 và https://github.com/thymeleaf/thymeleaf/issues/81 –

Trả lời

10

Update - 2015/12/24

Tính năng này sẵn trong Thymeleaf 3

tham khảo The Thymeleaf textual syntax trong 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}"/]; 

Nó không thể ở Thymeleaf 2. Như Patric LC đã đề cập, có hai vấn đề báo cáo cho việc này.

  1. unescaped inline for scripts/css #12

  2. Use Jackson for Javascript inlining of JSON #81

2

@Faraj, phiên bản mới của Thymeleaf cung cấp chức năng này. Họ thực hiện các tính năng cho các vấn đề mà bạn đã đề cập. Bạn có thể xem ở đây: http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

Các tính năng chính: chế độ mẫu

  • Ba văn bản: TEXT, JavaScript và CSS.
  • Cú pháp mới cho các phần tử trong chế độ mẫu văn bản: [# ...] ... [/].
  • Biểu thức đầu ra được cho phép, cả hai đã thoát là ([[...]]) và không bị thoát ([(...)]).
  • Thoát thông minh của JavaScript (dưới dạng chữ) và CSS (dưới dạng số nhận dạng).
  • Cấp độ phân tích cú pháp (/*[- ... -]*/) và chỉ các mẫu chú thích (/*[+ ... +]*/) nhận xét.
  • Mẫu tự nhiên được áp dụng cho tập lệnh JAVASCRIPT và tờ định kiểu CSS bằng cách bao bọc các phần tử và/hoặc biểu thức đầu ra bên trong các nhận xét (/*[# ...]*/).
+0

cảm ơn bạn đã chỉ ra. :) –

Các vấn đề liên quan