struts2与常用表格ajax操作的json传值问题

  struts与常用的dataTables和jqueryGrid等表格进行ajax传值时,经常会传值不适配的问题,这是因为struts在进行ajax操作时已经对你要操作的json数据进行了处理,所以不需要再在action中转换为json字符串以jqueryGrid为例

  1.action中的代码如下:

  首先得到jqueryGrid需要的各个属性值,totals,pages,page,rows,这些属性我在前台进行的一些转换,所以代码中的属性名称与这些属性名有些差异,将得到的属性值放在一个action中定义的map集合中

setMap(this.getJsonMap(totalPages, getPage(), totalRecord, equipList));
public Map<String, Object> getJsonMap(int totalpages, int currentpage, int totalrecords, List data){
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("totalpages", totalpages);
  map.put("currentpage", currentpage);
  map.put("totalrecords", totalrecords);
  map.put("data", data);
  return map;
 }

  2.struts配置文件中的代码

  其中的root为action返回结果中传到前台的变量,这里strus已经帮我们转换了,所以无需再自己写转换为字符串的代码,如何不写root,则会将action中所有的变量都转换为json对象

<action name="equipInfo" class="com.audiovisualcenter.action.EquipManagerAction" method="equipManager">
   <result name="success" type="json">
      <param name="root">map</param>
   </result>
 </action>

  3.前台的表格一般都需要json对象,所以可以直接适配

  下面是我的前台js代码,为了方便,只粘贴了部分代码

$("#grid-table").jqGrid({
     jsonReader : {  
      root:"data",
      page: "currentpage",
      total: "totalpages",
      records: "totalrecords",
      repeatitems: false,
     }, 
     url:"equipInfo",
     datatype: "json",
     mtype:"post",
     height: 400,
     colNames:['操作','序号','名称','编号', '总数','类型','状况'],
     colModel:[
      {name:'myac',index:'', 80, fixed:true, sortable:false, resize:false},
      {name:'id',index:'id', 60, sortable:false,editable: false},
      {name:'name',index:'name',90, editable:true, sorttype:"date",/*unformat: pickDate*/},
      {name:'no',index:'no', 90,editable: true,editoptions:{size:"20",maxlength:"30"}},
     viewrecords : true,
     recordtext:"显示第 {0} 至 {1} 项结果,共{2}条结果",
     emptyrecords:"未查询到任何记录",
     rowNum:10,
     rowList:[10,20,30],
     pager : "#grid-pager",
     pgtext:"{0}",
     altRows: true,
     auto true,
     //shrinkToFit:false,
     //加载完成后的修改
     loadComplete : function() {
      var table = this;
     },
    });
原文地址:https://www.cnblogs.com/overfly/p/8085130.html