2014-09-03 81 views
0

我在我的應用程序中使用jqgrid,並嘗試調用一個servlet將數據提取到我的jqgrid表中,並使用JSON。使用jqgrid和servlet

包括jqGrid的代碼來調用這個servlet是如下的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); 

任何一個可以幫助我,使工作或我提供任何替代方法來做到這一點。

+0

你爲什麼會選擇隱瞞發生錯誤? – 2014-09-03 06:13:59

回答

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

希望它有助於

+0

謝謝。現在我沒有得到例外。但數據仍未顯示在網格中。 – 2014-09-03 07:31:41

+0

可以發佈你的json數據 – Wahab 2014-09-03 08:08:25

+0

它在上面的servlet代碼中。我正在使用一個名爲GridModel的自定義模型類,它定義了所有的值。 – 2014-09-03 09:18:11