如何用thyme来序列化POJO?
问题内容:
我想<script>
使用thymeleaf 在标签内将POJO(普通的Java对象)作为普通Json 插入。我还使用Spring MVC作为框架。
给定这样的对象:
class Data {
String a;
int b;
Object c;
}
我想获得像这样的东西作为渲染模板:
<script>
var data = {
a: "foo",
b: 123,
c: {...}
}
</script>
直到我还没有找到使用百里香叶渲染这种方法的方法。
我试过了:
<script th:inline="javascript">
var data = /*[[${myDataObj}]]*/ {};
</script>
但这失败了,因为显然百里香无法序列化POJO。
然后,我还尝试提供已序列化为json的对象:
<script th:inline="javascript">
var data = /*[[${myDataAsJson}]]*/ {};
</script>
但这也不起作用,因为它将再次对字符串进行转义。同样,百里香叶似乎没有办法提供行未转义的字符串。
…现在这很烂…如何使用百里香叶在脚本标签中插入对象?
显然,这是自2012年以来的一个问题,他们似乎并未给予太多考虑:
…我的问题是:对此有任何解决方法吗?要使用百里香序列化POJO?有点烂。如果我不太依赖它,我会把它扔掉,但是现在它代表着很多工作来改变这种依赖关系。
问题答案:
编辑:
从thymeleaf 3开始,它已经实现:https
:
//github.com/thymeleaf/thymeleaf/issues/12
…只花了他们3年多的时间:/
好的,我还没有真正找到一种好的方法,但是这是我的“胜过一切”的解决方法:
<script th:inline="javascript">
var jsonString = /*[[${myJsonString}]]*/ "{\"a\":\"... ";
var data = JSON.parse(jsonString)
</script>
这不是理想的,因为它无用地执行了额外的JSON序列化/反序列化……但至少可以正常工作。