这是我的java服务
@RequestMapping(value="/refreshInterviewServiceList1", method = RequestMethod.GET)
public @ResponseBody JSONObject refreshInterviewServiceList1() throws JSONException{
List<ReportInterview> reportInterview = reportInterviewServiceImpl.findByReportId(reportId);
JSONObject output = new JSONObject();
JSONArray toplevel = new JSONArray();
output.put("page", 1);
output.put("records", reportInterview.size());
output.put("total",1);
for(int i = 0;i<reportInterview.size();i++){
JSONObject data = new JSONObject();
JSONArray data1 = new JSONArray();
data.put("id", i+1);
data1.put(reportInterview.get(i).getName());
data1.put(reportInterview.get(i).getOccupation());
data.put("cell", data1);
toplevel.put(data);
}
output.put("rows", toplevel);
System.out.println(output);
return output;
}
这是我的 JavaScript
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery("#projectTable").jqGrid({
url: 'refreshInterviewServiceList1',
datatype: "json",
jsonReader : {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: true,
cell: "cell",
id: "id"
},
colNames:['Id','Name','Occupation'],
colModel:[
{name:'id',index:'id', width:10},
{name:'name',index:'name', width:10},
{name:'occupation',index:'occupation', width:10}
],
rowNum:10,
rowList:[10,20,30],
height:460,
width:700,
pager: "#pagingDiv",
viewrecords: true,
caption: "Projects"
});
});
我的 json 对象的输出
{
"total": 1,
"page": 1,
"records": 2,
"rows": [
{
"id": 1,
"cell": [
"232",
"12"
]
},
{
"id": 2,
"cell": [
"45",
"454"
]
}
]
}
我现在的问题是jqgrid无法显示jqgrid中的json数据...仅显示空白列表...请帮助...谢谢!
最佳答案
这是我不久前为个人项目编写的一个实用程序。它生成 jqGrid 可以呈现的数据。
import java.util.List;
public class JQGridContainer {
private Integer page;
private Integer total;
private Integer records;
private List<JQGridRow> rows;
//getters and setters are omitted for brevity
}
import java.util.List;
public class JQGridRow {
private Integer id;
private List<String> cell;
//getters and setters are omitted for brevity
}
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.log4j.Logger;
public class JQGridFormatterUtil {
private static final Logger logger = Logger
.getLogger(JQGridFormatterUtil.class);
public static String getJSON(int currentPageNo,
int totalRecords, Set objectsToBeAdded,
List orderedPropertyNames) {
Integer pages = 0;
if(totalRecords % 50 >0){
pages = (totalRecords/50)+1;
}
else{
pages = (totalRecords/50);
}
JQGridContainer container = new JQGridContainer();
container.setPage(currentPageNo);
container.setTotal(pages);
container.setRecords(totalRecords);
List rows = new ArrayList();
if (!objectsToBeAdded.isEmpty()) {
for (Object obj : objectsToBeAdded) {
JQGridRow row = new JQGridRow();
row.setId(new Integer(getPropertvalue(obj, "id")));
List cells = new ArrayList();
for (String propertyName : orderedPropertyNames) {
cells.add(getPropertvalue(obj, propertyName));
}
row.setCell(cells);
rows.add(row);
}
}
container.setRows(rows);
return JSONUtil.convertToJSON(container);
}
private static String getPropertvalue(Object bean, String propName) {
String val = null;
try {
val = ObjectUtils.toString(PropertyUtils.getProperty(bean, propName));
} catch (IllegalAccessException e) {
logger.error(e);
} catch (InvocationTargetException e) {
logger.error(e);
} catch (NoSuchMethodException e) {
logger.error(e);
}
return val;
}
import org.apache.log4j.Logger;
import com.google.gson.Gson;
public class JSONUtil {
private static final Logger logger = Logger.getLogger(JSONUtil.class);
public static String convertToJSON(Object obj){
String json = null;
Gson gson = new Gson();
json=(gson.toJson(obj));
logger.debug(json);
return json;
}
}
}
关于java - jqGrid不显示来自java的Json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939560/