Thymeleaf:当字段名称应包含破折号时,将对象列表转换为 JSON
Thymeleaf: convert a list of objects to JSON when fields' name should contains a dash
我有一个简单的 class 如下所示:
public class Item {
private final String hcKey;
private final int value;
public Item(String hcKey, int value) {
this.hcKey = hcKey;
this.value = value;
}
public String getHcKey()
}
我创建了一个 List<Item>
并将其作为属性传递给 ThymeLeaf 模板以将数据输入 Highchart 地图:
List<Item> items = Arrays.asList(new Item("xyz", 5), ... );
model.addAttribute("entries", items);
return "chart";
在我的 HTML 页面上,我有:
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
var data = [[${entries}]];
...
});
/*]]>*/
</script>
请注意,如果我执行 MVC 服务,属性会正确扩展:
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
var data = [{'hcKey':'xyz','value':5}, ... ];
...
});
/*]]>*/
</script>
最后,问题!
不幸的是,Highchairs 期望第一个字段的名称是 hc-key
,但破折号不是 Java 中字段名称的有效字符。如何自动获取以下内容?
...
var data = [{'hc-key':'xyz','value':5}, ... ];
... ^^^^^^
您可以在 JavaScript 中映射这些选项(键),例如:
var data = [[${entries}]].map(function(item) {
item['hc-key'] = item.hcKey;
return item;
});
我有一个简单的 class 如下所示:
public class Item {
private final String hcKey;
private final int value;
public Item(String hcKey, int value) {
this.hcKey = hcKey;
this.value = value;
}
public String getHcKey()
}
我创建了一个 List<Item>
并将其作为属性传递给 ThymeLeaf 模板以将数据输入 Highchart 地图:
List<Item> items = Arrays.asList(new Item("xyz", 5), ... );
model.addAttribute("entries", items);
return "chart";
在我的 HTML 页面上,我有:
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
var data = [[${entries}]];
...
});
/*]]>*/
</script>
请注意,如果我执行 MVC 服务,属性会正确扩展:
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
var data = [{'hcKey':'xyz','value':5}, ... ];
...
});
/*]]>*/
</script>
最后,问题!
不幸的是,Highchairs 期望第一个字段的名称是 hc-key
,但破折号不是 Java 中字段名称的有效字符。如何自动获取以下内容?
...
var data = [{'hc-key':'xyz','value':5}, ... ];
... ^^^^^^
您可以在 JavaScript 中映射这些选项(键),例如:
var data = [[${entries}]].map(function(item) {
item['hc-key'] = item.hcKey;
return item;
});