<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"
}
有没有办法可以强制百万美元与ObjectMapper兼容。
答案 0 :(得分:2)
我认为this必须说明关于杰克逊和JSON在百里香中的内联 总而言之,考虑切换到自定义TextInliners的可能性 3.0百万美元的里程碑。
所以,目前没有“干净”的方式来切换到Jackson json序列化。
然而,你可以做的是偷偷摸摸你自己的TextInliner。那就是:
org.thymeleaf.standard.inliner.StandardJavaScriptTextInliner
。formatEvaluationResult(Object)
方法版本,StandardJavaScriptTextInliner
类放在适当的位置,以便在原始类之前加载它(tomcat中的f.e.将它放在正确的包结构下的类dir中)。答案 1 :(得分:0)
另一种选择:
在thymeleaf上下文中设置listObject时,将其设置为通过使用Jackson将listObject转换为JSON字符串获得的字符串
然后使用JS eval()或更好的方法 - JSON.parse将字符串转换为JS对象。