我最近将项目从Thymeleaf 2迁移到版本3,我遇到了以下问题:
我有一个<script>
包含由内联视图对象填充的变量,这样:
<script th:inline="javascript">
/*<![CDATA[*/
window.gtmEventsDataLayer = /*[[${gtm.events}]]*/'';
/*]]>*/
</script>
其中${gtm.events}
是这样构建的对象列表:
public class GTMEvent {
private String selector;
private String DOMEvent;
private String GTMEvent;
private String GTMLabel;
}
但是,正在使用转换为小写的对象属性名称呈现页面:
window.gtmEventsDataLayer = [{
"selector":".gtm-reply-begin",
"domevent":"click",
"gtmevent":"R2SEmailBegin",
"gtmlabel":null
}];
我甚至不确定这是Thymeleaf的内联或我的JSON序列化配置(由Jackson完成,因为这是一个Spring Boot应用程序)的问题,但是因为它在迁移到Thymeleaf 3之前有效,我假设它与新的内联实现有关。
我也尝试在类属性上指定@JsonProperty("DOMEvent")
,但在这种情况下,javascript对象包含正确的cased属性和小写的属性,这不是最佳解决方案。
在渲染javascript对象时,是否有一些我缺少强制Thymeleaf保留案例的配置?