javascript - thymeleaf 内联 javascript 框架问题

标签 javascript inline thymeleaf

<script th:inline="javascript" type="text/javascript">
    //expose list data to javascript
    var listObject = /*[[${listObject}]]*/ [];
</script>

打印到文件中的替换文本与 Jackson 库的 ObjectMapper 所做的不同。

在上面的例子中,Thymeleaf 的 listObject 将是

{
   "dataType":{
      "$type":"DataType",
      "$name":"STRING"
   },
   "friendlyName":"Customer Key"
}

如果我使用 ObjectMapper 打印对象(也与 Spring @RequestBody/@ResponseBody 一起使用),它将是

{
   "dataType":"STRING",
   "friendlyName":"Customer Key"
}

有没有办法强制 thymeleaf 与 ObjectMapper 兼容。

最佳答案

我认为this不得不说一下 Jackson 和 thymeleaf 中的 JSON 内联。
总而言之,考虑切换到自定义 TextInliners 的可能性 3.0 thymeleaf 里程碑。

因此,目前没有“干净”的方法来切换到 Jackson json 序列化。

但是,您可以做的是隐藏您自己的 TextInliner。即:

  1. 创建一个类org.thymeleaf.standard.inliner.StandardJavaScriptTextInliner
  2. 实现您自己版本的 formatEvaluationResult(Object) 方法,
    您可以在其中调用 Jackson ObjectMapper 。
  3. 将这个新的 StandardJavaScriptTextInliner 类放在适当的位置,以便它在原始类之前加载(例如,在 tomcat 中将其放在正确的包结构下的类目录中)。

关于javascript - thymeleaf 内联 javascript 框架问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318964/

相关文章:

javascript - 随机序列生成正则表达式分隔符

javascript - 比三元更智能的内联处理 undefined object

spring - 如何在Spring Boot中使用Thymeleaf生成XML?

java - 使用 java、thymeleaf 和 spring mvc 形成表格

c# - 将 MVC 操作结果发送到打印机

javascript - Angular : Accessing particular directive scope from controller

javascript - var card= cleanNum : function(){. ...} 这个 cleanNum : mean? 是做什么的

c++ - 为什么使用 fprintf 的内联函数需要声明为静态的?

html - 如何防止内联列表元素的两侧在 HTML 中被截断?

java - thymeleaf post 后,对象的 Set<T> 属性变为 null