jquery datatable后台封装数据示例代码
1.数据转换类
publicclassDataTableReturnObject{ privateintiTotalRecords; privateintiTotalDisplayRecords; privateStringsEcho; privateString[][]aaData; publicDataTableReturnObject(inttotalRecords,inttotalDisplayRecords,Stringecho,String[][]d){ this.setiTotalRecords(totalRecords); this.setiTotalDisplayRecords(totalDisplayRecords); this.setsEcho(echo); this.setAaData(d); } publicvoidsetiTotalRecords(intiTotalRecords){ this.iTotalRecords=iTotalRecords; } publicintgetiTotalRecords(){ returniTotalRecords; } publicvoidsetiTotalDisplayRecords(intiTotalDisplayRecords){ this.iTotalDisplayRecords=iTotalDisplayRecords; } publicintgetiTotalDisplayRecords(){ returniTotalDisplayRecords; } publicvoidsetsEcho(StringsEcho){ this.sEcho=sEcho; } publicStringgetsEcho(){ returnsEcho; } publicvoidsetAaData(String[][]aaData){ this.aaData=aaData; } publicString[][]getAaData(){ returnaaData; } }
2帮助类
publicclassBaseController{ protectedJSONResponsesuccessed(Objectobj){ JSONResponseret=newJSONResponse(); ret.setSuccessed(true); ret.setReturnObject(obj); returnret; } }
3.实现类
publicJSONResponsesearchList(HttpServletRequestrequest,HttpServletResponseresponse,StringsEcho)throwsException{ //convertToMap定义于父类,将参数数组中的所有元素加入一个HashMap Map<Object,Object>objQueryMap=newHashMap<Object,Object>(); Stringjsondata=request.getParameter("aoData"); JSONArrayjsonarray=JSONArray.fromObject(jsondata); StringstrDisplayStart=""; StringstrDisplayLength=""; String[]arrayColumen=newString[newJSONUser().toArray().length]; intstrSortId=0; StringstrSort=""; for(inti=0;i<jsonarray.size();i++)//从传递参数里面选出待用的参数 { JSONObjectobj=(JSONObject)jsonarray.get(i); StringstrName=(String)obj.get("name"); StringstrValue=obj.get("value").toString(); if(strName.equals("sEcho")){ sEcho=strValue; } if(strName.equals("iDisplayStart")){ strDisplayStart=strValue; } if(strName.equals("iDisplayLength")){ strDisplayLength=strValue; } if(strName.equals("sColumns")){ arrayColumen=obj.get("value").toString().split(","); } if(strName.startsWith("iSortCol_")){ strSortId=Integer.parseInt(strValue);//排序列数 } if(strName.startsWith("sSortDir_")){ strSort=strValue;//排序的方向"desc"或者"asc". } } Map<Object,Object>params=newHashMap<Object,Object>(); try{ params=managerService.getUserList(参数); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } Stringcount=(String)params.get("COUNT");//总数 String[][]strData=(String[][])params.get("AO_DATA");//当前页显示的集合 returnsuccessed(newDataTableReturnObject(Integer.parseInt(count),Integer.parseInt(count),sEcho,strData)); }
4.查询方法
publicMap<Object,Object>getUserList(Map<Object,Object>queryParams) throwsException{ StringiCount=总记录数; //将查询结果转换为一个二维数组 String[][]data={}; if(lstUser!=null&&lstUser.size()>0){ intrecord=lstUser.size(); data=newString[record][]; for(inti=0;i<lstUser.size();i++){ UserobjUser=(User)lstUser.get(i); JSONUserjsonUser=newJSONUser(); BeanUtils.copyProperties(jsonUser,objUser); data[i]=jsonUser.toArray(); } } queryParams.clear();//情况map,重新设值使用 queryParams.put("AO_DATA",data); queryParams.put("COUNT",iCount); returnqueryParams; }
注意存放的数组对象的属性必须与前端页面显示的列保持一样的个数