<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。即:
- 创建一个类
org.thymeleaf.standard.inliner.StandardJavaScriptTextInliner
。 - 实现您自己版本的
formatEvaluationResult(Object)
方法,
您可以在其中调用 Jackson ObjectMapper 。 - 将这个新的
StandardJavaScriptTextInliner
类放在适当的位置,以便它在原始类之前加载(例如,在 tomcat 中将其放在正确的包结构下的类目录中)。
关于javascript - thymeleaf 内联 javascript 框架问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318964/