【问题标题】:Working with jqgrid and servlet使用 jqgrid 和 servlet
【发布时间】:2014-10-27 13:07:15
【问题描述】:

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

包含调用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);

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

【问题讨论】:

  • 为什么你会选择隐瞒发生的错误?

标签: java jquery json servlets jqgrid


【解决方案1】:

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

希望对你有帮助

【讨论】:

  • 谢谢。现在我没有例外。但是数据仍然没有显示在网格中。
  • 你能发布你的json数据吗
  • 它在上面的 servlet 代码中。我正在使用一个名为 GridModel 的自定义模型类,它定义了所有值。
  • out.println(jsonobj) 返回的内容。使用 jsonlint link 检查它是否是有效的 json。并检查是否遵循json接收数据link
  • 所有数据如“total”“page”“records”正在显示,但行内容不显示!!
猜你喜欢
  • 2011-01-02
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
相关资源
最近更新 更多