使用jqgrid和servlet

时间:2014-09-03 06:12:38

标签: java jquery json servlets jqgrid

我在我的应用程序中使用jqgrid并尝试调用servlet将数据提取到我的jqgrid表中,使用JSON。

包含调用servlet的jqgrid代码的jsp如下:

<script >
$(document)
.ready(function() {
 $("#list")
 .jqGrid({
     url: 'http://localhost:9090/YMSAppointment/GridServlet',
     datatype: 'json',
     mtype: 'POST',
     colNames: ['id', 'firstName',
         'lastName', 'city', 'state',
         'phoneNumber'
     ],
     colModel: [{
         name: 'id',
         index: 'id',
         width: 100
     }, {
         name: 'firstName',
         index: 'firstName',
         width: 150,
         editable: true
     }, {
         name: 'lastName',
         index: 'lastName',
         width: 150,
         editable: true
     }, {
         name: 'city',
         index: 'city',
         width: 80,
         editable: true
     }, {
         name: 'state',
         index: 'state',
         width: 100,
         editable: true
     }, {
         name: 'phoneNumber',
         index: 'phoneNumber',
         width: 80,
         editable: true
     }],
     pager: '#pager',
     rowNum: 10,
     rowList: [10, 20, 30],
     sortname: 'invid',
     sortorder: 'desc',
     viewrecords: true,
     gridview: true,
     caption: 'Data Report',
     jsonReader: {
         repeatitems: false,
     },
     editurl: "http://localhost:9090/YMSAppointment/GridServlet"
 });
 jQuery("#list").jqGrid('navGrid', '#pager', {
     edit: true,
     add: true,
     del: true,
     search: true
 });
});

servlet的post方法如下所示:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    GridModel gridModel1 = new GridModel();
    gridModel1.setId(1);
    gridModel1.setFirstName("PavanKumar");
    gridModel1.setLastName("Mantha");
    gridModel1.setCity("Hyderabad");
    gridModel1.setState("AndhraPradesh");
    gridModel1.setPhoneNumber("1234567890");

    GridModel gridModel2 = new GridModel();
    gridModel2.setId(2);
    gridModel2.setFirstName("PavanKumar");
    gridModel2.setLastName("Mantha");
    gridModel2.setCity("Hyderabad");
    gridModel2.setState("AndhraPradesh");
    gridModel2.setPhoneNumber("1234567890");

    List<GridModel> gridModels = new ArrayList<>();
    gridModels.add(gridModel1);
    gridModels.add(gridModel2);
     try {
    JSONArray jsonArray = (JSONArray)JSONSerializer.toJSON(gridModels);
    String json = "{'page':1,'total':'2','records':'1','rows':"+jsonArray+"}";
    JSONObject jsonObject = (JSONObject)JSONSerializer.toJSON(json);
    PrintWriter out = response.getWriter();
    out.print(jsonObject.toString());
     }
     catch(Exception e){

     }

}

我无法将数据从servlet提取到jqgrid中。 我正在创建一个JSON对象时出现错误:

JSONArray jsonArray = (JSONArray)JSONSerializer.toJSON(gridModels);

任何人都可以帮助我使其发挥作用或为我提供任何替代方法。

1 个答案:

答案 0 :(得分:0)

猜猜json格式是错误的..而且无需转移到JSONArray

JSONArray jsonArray = (JSONArray)JSONSerializer.toJSON(gridModels);
String json = "{'page':1,'total':'2','records':'1','rows':"+jsonArray+"}";
JSONObject jsonObject = (JSONObject)JSONSerializer.toJSON(json);
PrintWriter out = response.getWriter();
out.print(jsonObject.toString());

更改为

JSONObject jsonobj = new JSONObject();
jsonobj.put("total", totalPages);
jsonobj.put("page", page);
jsonobj.put("records", records);
jsonobj.put("rows", gridModels ); 
out.println(jsonobj);

希望有所帮助