java - 如何在 Jquery Jtable 中绑定(bind) json 嵌套对象?

标签 java jquery gson jquery-jtable

表格可以显示idNodateOfBirthgender,但是nameaddress 无法显示。

java customer list改造后为:

{
  ...
  "idNo": "MyNRC",
  ...
  "address": {
    "homeNo": "No-27",
    "street": "12th street",
    "city": "MyCity",
    "province": "MyProvince"
  },
  "name": {
    "firstName": "Jone",
    "middleName": "",
    "lastName": "Hon"
  }
}

我的字段绑定(bind)脚本中缺少什么?

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);

客户.java

public class Customer {
    private String idNo;
    private Date dateOfBirth;
    private Gender gender;
    private Address address;
    private Name name;
}   

地址.java

public class Address {
    private String homeNo;
    private String street;
    private String city;
    private String province;
}   

名称.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>

最佳答案

希望还不算太晚。使用关键字“record”可帮助您从检索到的 json 数据中访问嵌套字段。请参阅下面的示例。

.....

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;
        }
},

........

灵感来自此链接:https://github.com/hikalkan/jtable/issues/509

关于java - 如何在 Jquery Jtable 中绑定(bind) json 嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476576/

相关文章:

java - 在抽屉导航中禁用暗淡化

jquery - Chartjs 条形图显示未定义的值

javascript - 无法读取 JSON 文件

Android空对象引用异常

java - 如何将 getMethod() 与原始类型一起使用?

java - RMI ClassNotFoundException : java. RMI.server.RemoteObjectInitationHandler 仅适用于 java 1.4.2 客户端

javascript - 如何检查浏览器调整大小是否符合条件?

android - 用于 retrofit 的自定义转换器

java - 无法调用 Product.class 的无参数构造函数

java - Class.newInstance() 方法如何使用?