[英]How to bind json nested object in Jquery Jtable?
Table can display idNo
, dateOfBirth
and gender
, but name
and address
cannot display. 表格可以显示
idNo
, dateOfBirth
和gender
,但是name
和address
无法显示。
After transformation of java customer list
, it will be : 转换
java customer list
,它将是:
{
...
"idNo": "MyNRC",
...
"address": {
"homeNo": "No-27",
"street": "12th street",
"city": "MyCity",
"province": "MyProvince"
},
"name": {
"firstName": "Jone",
"middleName": "",
"lastName": "Hon"
}
}
What I am missing in my fields binding script? 我的字段绑定脚本中缺少什么?
CustomerManage.java <- servlet CustomerManage.java <-servlet
....
List<Customer> customerList = customerService.findAllCustomer();
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(customerList, new TypeToken<List<Customer>>(){}.getType());
JsonArray jsonArray = element.getAsJsonArray();
String listData = jsonArray.toString();
listData = "{\"Result\":\"OK\",\"Records\":" + listData + "}";
response.setContentType("application/json");
response.getWriter().print(listData);
Customer.java 客户.java
public class Customer {
private String idNo;
private Date dateOfBirth;
private Gender gender;
private Address address;
private Name name;
}
Address.java 地址.java
public class Address {
private String homeNo;
private String street;
private String city;
private String province;
}
Name.java 名称.java
public class Name {
private String firstName;
private String middleName;
private String lastName;
}
<script type="text/javascript">
$(document).ready(function () {
$('#CustomerTableContainer').jtable({
title: 'Manage Customer',
actions: {
listAction: 'CustomerManage?action=list',
createAction:'CustomerManage?action=create',
updateAction: 'CustomerManage?action=update',
deleteAction: 'CustomerManage?action=delete'
},
fields: {
idNo: {
title: 'NRC-No',
key: true,
width: '20%',
edit: false
},
dateOfBirth: {
title: 'Date Of Birth',
key: true
},
gender: {
title: 'Gender',
key: true
},
address: {
title: 'Address',
homeNo: {
title: 'Home-No',
key: true
},
street: {
title: 'Street',
key: true
},
city: {
title: 'City',
key: true
},
province: {
title: 'Province',
key: true
}
},
name: {
firstName: {
title: 'First Name',
key: true
},
middleName: {
title: 'Middle Name',
key: true
},
lastName: {
title: 'Last Name',
key: true
}
}
}
});
$('#CustomerTableContainer').jtable('load');
});
</script>
hope it is not too late. 希望还不晚。 Use the keyword 'record' to help you access nested fields from the retrieved json data.
使用关键字“ record”可帮助您从检索到的json数据中访问嵌套字段。 See below for an example.
参见以下示例。
.....
gender: {
title: 'Gender',
key: true
},
homeNo: {
title: 'Home-No',
key: true,
display:function(data){
return data.record.address.homeNo;
}
},
street: {
title: 'Street',
key: true,
display:function(data){
return data.record.address.street;
}
},
city: {
title: 'City',
key: true,
display:function(data){
return data.record.address.city;
}
},
province: {
title: 'Province',
key: true,
display:function(data){
return data.record.address.province;
}
},
firstName: {
title: 'First Name',
display:function(data){
return data.record.name.firstName;
}
},
middleName: {
title: 'Middle Name',
display:function(data){
return data.record.name.middleName;
}
},
lastName: {
title: 'Last Name',
display:function(data){
return data.record.name.lastName;
}
},
........
inspiration from this link: https://github.com/hikalkan/jtable/issues/509 从此链接获得灵感: https : //github.com/hikalkan/jtable/issues/509
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.