jqgrid+struts2的时候,后台json数据没有传到前台,非常费解,研究了好长时间了,求助!
struts.xml如下
一个抽象类BaseAction
Action实现
jqgrid01.js
jsp页面
调试的时候action里面的gridModel是有数据的,但是前台页面数据并没有显示。
用chrome浏览器的F12看到的response里面也没有gridModel 但是struts.xml里配的其他数据都有!
为什么没有gridModel里面的数据呢?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.url.includeParams" value="none" />
<constant name="struts.ui.theme" value="simple" />
<package name="meswork" extends="json-default">
<action name="getDes" class="com.bhmc.action.DevicesManageAction" method="getDes">
<result name="success" type="json">
<param name="includeProperties">
^gridModel/[/d+/]/./w+,
rows, page, total, record
</param>
<param name="noCache">true</param>
<param name="ignoreHierarchy">false</param>
</result>
</action>
......
一个抽象类BaseAction
package com.bhmc.action;
import java.util.Collections;
import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import com.opensymphony.xwork2.ActionSupport;
public abstract class BaseAction<T> extends ActionSupport{
private static final long serialVersionUID = 1L;
private List<T> gridModel = Collections.emptyList();
private Integer rows = 0;
private Integer page = 0;
private Integer total = 0;
private Integer record = 0;
private String sord;
private String sidx;
private String search;
public abstract int getResultSize();
public abstract List<T> listResults(int from, int length);
public String refreshGridModel() {
try {
List<T> results = Collections.emptyList();
record = this.getResultSize();
int from = rows * (page - 1);
int length = rows;
results = this.listResults(from, length);
this.setGridModel(results);
total = (int) Math.ceil((double) record / (double) rows);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
this.addActionError(e.getMessage());
return ERROR;
}
}
@JSON(serialize=true)
public List<T> getGridModel() {
return gridModel;
}
public void setGridModel(List<T> gridModel) {
this.gridModel = gridModel;
}
public Integer getRows() {
return rows;
}
public void setRows(Integer rows) {
this.rows = rows;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getRecord() {
return record;
}
public void setRecord(Integer record) {
this.record = record;
}
public String getSord() {
return sord;
}
public void setSord(String sord) {
this.sord = sord;
}
public String getSidx() {
return sidx;
}
public void setSidx(String sidx) {
this.sidx = sidx;
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
}
Action实现
package com.bhmc.action;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.bhmc.bean.Devices;
import com.bhmc.bean.User;
import com.bhmc.service.ManageServiceIf;
public class DevicesManageAction extends BaseAction<Devices> {
/**
*
*/
private static final long serialVersionUID = 1L;
private ManageServiceIf devicesManageService;
public void setDevicesManageService(ManageServiceIf devicesManageService){
this.devicesManageService = devicesManageService;
}
public String getDes(){
return this.refreshGridModel();
}
@SuppressWarnings("unchecked")
public List<Devices> listResults(int from, int length) {
List<Devices> results = Collections.emptyList();
results = (List<Devices>) devicesManageService.queryResults(from, length);
return results;
}
@Override
public int getResultSize() {
return Integer.valueOf(devicesManageService.count());
}
}
jqgrid01.js
$(function(){
// 配置jqGrid组件
$("#gridTable").jqGrid({
url: "getDes.action",
datatype: "json",
mtype: "GET",
height: 350,
autowidth: true,
colModel: [
{name:"deviceid",index:"deviceid",label:"deviceid",width:40},
{name:"type",index:"type",label:"type",width:80,sortable:false},
{name:"brand",index:"brand",label:"brand",width:80,sortable:false},
{name:"model",index:"model",label:"model",width:160,sortable:false},
{name:"function",index:"function",label:"function",width:120,sortable:false} ,
{name:"shop",index:"shop",label:"shop",width:80,sortable:false},
{name:"position",index:"position",label:"position",width:80,sortable:false},
{name:"state",index:"state",label:"state",width:80,sortable:false},
{name:"ip",index:"ip",label:"ip",width:80,sortable:false},
{name:"account",index:"account",label:"account",width:80,sortable:false},
{name:"password",index:"password",label:"password",width:80,sortable:false},
{name:"os",index:"os",label:"os",width:80,sortable:false},
{name:"computername",index:"computername",label:"computername",width:80,sortable:false},
{name:"serialno",index:"serialno",label:"serialno",width:80,sortable:false},
{name:"assetno",index:"assetno",label:"assetno",width:80,sortable:false},
{name:"buyer",index:"buyer",label:"buyer",width:80,sortable:false},
{name:"buydate",index:"buydate",label:"buydate",width:80,sortable:false},
{name:"project",index:"project",label:"project",width:80,sortable:false},
{name:"enviroment",index:"enviroment",label:"enviroment",width:80,sortable:false},
{name:"software",index:"software",label:"software",width:80,sortable:false},
{name:"price",index:"price",label:"price",width:80,sortable:false},
{name:"comment",index:"comment",label:"comment",width:80,sortable:false},
],
viewrecords: true,
rowNum: 15,
rowList: [15,50,100],
prmNames: {search: "search"}, //(1)
jsonReader: {
root:"gridModel", // (2)
records: "record", // (3)
repeatitems : false // (4)
},
pager: "#gridPager",
caption: "DeviceList/////////////",
hidegrid: false
});
}); jsp页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<title>jqGrid01</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui.min.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />
<script type="text/javascript" src="js/jquery-1.11.0.min.js" ></script>
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-cn.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.js" type="text/javascript"></script>
<script src="js/jqGrid01.js" type="text/javascript"></script>
</head>
<body>
<h2>
jqGrid测试 01
</h2>
<div>
<table id="gridTable">
</table>
<div id="gridPager"></div>
</div>
</body>
</html>
调试的时候action里面的gridModel是有数据的,但是前台页面数据并没有显示。
用chrome浏览器的F12看到的response里面也没有gridModel 但是struts.xml里配的其他数据都有!
为什么没有gridModel里面的数据呢?

...全文
相关推荐
jqgrid+struts2实现的增删改查
`,以便返回JSON数据给jqGrid。
jqGrid在Struts2和MySQL环境下的增删改查应用示例
在本章中,我们将探究jqGrid这个广泛应用于Web开发中的数据表格组件,了解其强大的数据展示能力及编辑功能。jqGrid支持通过AJAX与服务器端进行数据的CRUD(创建、读取、更新、删除)操作,提供丰富API以方便开发者实现复杂的表格交互功能。在进行前后端分离的项目时,需求分析和技术选型是至关重要的步骤。首先需要深入理解业务需求,然后根据需求来选择合适的技术栈。例如,对于一个需要频繁更新UI的项目,React可能是一个好选择。如果项目需要快速开发,Vue.js可能更合适。
jqgrid+struts2
**三、jqGrid与Struts2结合应用**jqGrid与Struts2的结合使用可以实现数据的后台动态加载和前端的交互操作。具体步骤如下:1.
JqGrid Demo json
在这个Demo中,我们将深入探讨JqGrid与JSON的结合以及Struts2框架如何在后台提供数据支持。首先,JqGrid允许用户通过Ajax方式获取和操作数据,提供了排序、分页、搜索和编辑等功能。
jqGrid与Struts2的结合应用_操作Grid数据
总结来说,jqGrid 与 Struts2 的结合应用提供了高效的数据展示和管理能力。


Web 开发
