2014-09-03 2 views
0

Я использую jqgrid в своем приложении и пытаюсь вызвать сервлет для извлечения данных в мою таблицу jqgrid usig JSON.Работа с jqgrid и сервлетом

СПЯ, который включает в себя jqgrid код для вызова сервлета выглядит следующим образом:

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

И метод пост сервлета выглядит, как показано ниже:

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

    } 

} 

Я не удалось получить данные из сервлета в jqgrid. ошибка приходит в строке, где я создаю объект JSON:

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

Может ли один помочь мне, чтобы сделать его работу или предоставить мне любые альтернативные методы, чтобы сделать это.

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

надеюсь, что это помогает

+0

спасибо. Теперь я не получаю исключения. Но данные по-прежнему не отображаются в сетке. –

+0

can u post ur json data – Wahab

+0

Это там в коде сервлета выше. Я использую самоопределенный класс модели GridModel, который определяет все значения. –

Смежные вопросы