简体   繁体   English

如何在Jquery Jtable中绑定json嵌套对象?

[英]How to bind json nested object in Jquery Jtable?

Table can display idNo , dateOfBirth and gender , but name and address cannot display. 表格可以显示idNodateOfBirthgender ,但是nameaddress无法显示。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM