简体   繁体   English

从 servlet 到 jqGrid 的 JSON 数据不显示

[英]JSON data from servlet to jqGrid not displaying

I am new to jQuery and finding difficulty in displaying data from my servlet to jqGrid in my jsp.我是 jQuery 新手,在我的 jsp 中显示从我的 servlet 到 jqGrid 的数据时遇到了困难。 I have used google gson to convert data from ArrayList to a String variable json.我使用 google gson 将数据从 ArrayList 转换为字符串变量 json。 It's displaying json data in the console when I run the project and displaying an empty grid.当我运行项目并显示一个空网格时,它在控制台中显示 json 数据。

Student.java学生.java

package com
public class Student {
private String name;
 private String mark;
 private String address;
//getter and setters

StudentDataService.java学生数据服务.java

package com;

import java.util.ArrayList;
import java.util.List;

import com.Student;

public class StudentDataService {

public static List<Student> getStudentList() {

      List<Student> listOfStudent = new ArrayList<Student>();

      Student aStudent = new Student();

      for (int i = 1; i <= 10; i++) {

       aStudent = new Student();

       aStudent.setName("R" + i);

       aStudent.setMark("20" + i);

       aStudent.setAddress("pune "+i);

       listOfStudent.add(aStudent);
      }

      return listOfStudent;

     }
}

My servlet code:我的小服务程序代码:

StudentDataServlet.java StudentDataServlet.java

package com;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.Student;
import com.StudentDataService;

/**
 * Servlet implementation class StudentDataServlet
*/
public class StudentDataServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public StudentDataServlet() {
    super();
}

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

    response.setContentType("application/json");
    PrintWriter out = response.getWriter();

    List<Student> lisOfStudent = StudentDataService.getStudentList();
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    String json = gson.toJson(lisOfStudent);
    out.print(json);
    System.out.println(json);

}

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

    doGet(request, response);
}
 }

My JSP page:我的 JSP 页面:

slickGridDemo.jsp slickGridDemo.jsp

<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>jqGrid Example</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.2.js'></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jqueryui/1.8.14/jquery-ui.js"> 
</script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css">
<link rel="stylesheet" type="text/css"  href="http://trirand.com/blog/jqgrid/themes/ui.jqgrid.css">
<script type='text/javascript' src="http://trirand.com/blog/jqgrid/js/i18n/grid.locale-  en.js"></script>
<script type='text/javascript'  src="http://trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js"></script>
<style type='text/css'>
</style>



<script type='text/javascript'>
jQuery(document).ready(function () {

         jQuery("#grid").jqGrid({
             url: "http://localhost:9080/JquerySlickGrid/StudentDataServlet",
             datatype: "json",

             jsonReader: {repeatitems: false, id: "ref"},
             colNames:['Name','Marks', 'Address'],
             colModel:[
                 {name:'Name',index:'Name', width:100},
                 {name:'Marks',index:'Marks', width:100},
                 {name:'Address',index:'Address', width:500}
             ],
             rowNum:20,
             rowList:[20,60,100],
             height:460,
             pager: "#pagingDiv",
             viewrecords: true,
             caption: "Json Example"
         });
     });
</script>
</head>
<body>
<table id="grid"></table>
<div id="pagingDiv"></div>
</body>
</html>

I had the same issue initially.我最初有同样的问题。 I solved like converting json into local data, This is how i am populating json data into jqgrid.我解决了将 json 转换为本地数据的问题,这就是我将 json 数据填充到 jqgrid 中的方式。 It may helps you.它可能会帮助你。

function getReport() {
$.ajax({
            url : "totalSalesReport.do?method=searchSpendReport"
    type : "POST",
    async : false,
    success : function(data) {
        $("#gridtable").jqGrid('GridUnload');

                   var newdata = jQuery.parseJSON(data);

                $('#gridtable').jqGrid({
            data : newdata,
            datatype : 'local',
            colNames : [ 'Name', 'Year', 'Period'],
            colModel : [ {
                name : 'name',
                index : 'name'
            }, {
                name : 'year',
                index : 'year'
            }, {
                name : 'period',
                index : 'period'
            }],
            rowNum : 10,
            rowList : [ 10, 20, 50 ],
            pager : '#pager',
            shrinkToFit : false,
            autowidth : true,
            viewrecords : true,
            height : 'auto'
        }).jqGrid('navGrid', '#pager', {
    add : false,
    edit : false,
    del : false,
    search : false,
    refresh : false
},

{}, /* edit options */
{}, /* add options */
{}, /* del options */
{});
}});}

Let me know if you need further assistance in getting data from jsp page.如果您在从 jsp 页面获取数据方面需要进一步帮助,请告诉我。

Updated Ans :更新答案:

I am using jsp for formatting the List data to json array.我正在使用 jsp 将列表数据格式化为 json 数组。 The piece of code is given below.下面给出了这段代码。 You need to add json object jar file for this purpose.为此,您需要添加 json 对象 jar 文件。

<%@page import="java.sql.ResultSet"%>
<%@page import="java.util.*,java.util.ArrayList"%>
<%@page import="org.json.simple.JSONObject"%>
<%
net.sf.json.JSONObject responcedata = new net.sf.json.JSONObject();
net.sf.json.JSONArray cellarray = new net.sf.json.JSONArray();
net.sf.json.JSONArray cell = null; //new net.sf.json.JSONArray();
net.sf.json.JSONObject cellobj = null; //new net.sf.json.JSONObject();

List<ReportDto> reportDtos = null;
if (session.getAttribute("agencyReport") != null) {
    reportDtos = (List<ReportDto>) session
    .getAttribute("agencyReport");
}

ReportDto reportDto = null;

int i = 0;
if (reportDtos != null) {
    for (int index = i; index < reportDtos.size(); index++) {
        reportDto = reportDtos.get(index);
        cellobj = new net.sf.json.JSONObject();
        cell = new net.sf.json.JSONArray();
        cellobj.put("name", reportDto.getVendorName());
        cellobj.put("year", reportDto.getSpendYear());
        cellobj.put("period",reportDto.getReportPeriod());
        cellarray.put(cellobj);
        i++;
    }
    out.println(cellarray);
}
%>

change your colModel name and index same as the pojo class variables name .将您的colModel名称和索引更改为与 pojo 类变量名称相同

Thanks , Amit Kumar谢谢,阿米特库马尔

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM