向前台传送整个json数据的实体bean
PageHelper page = new PageHelper(); //用于后台分页的
List
columnList = new ArrayList
(); Map
column = new HashMap
(); column.put("applyDate", "日期"); column.put("proBriefName", "项目简称"); column.put("activityCode", "财务计划编号"); column.put("applicant", "申请人"); column.put("amount", "金额"); column.put("fundPurpose", "经费用途"); column.put("loanNo", "借款单号"); // 获取实体类的所有属性,返回Field数组 LoanBean t = new LoanBean(); Field[] field = t.getClass().getDeclaredFields(); // 遍历所有属性 for (int j = 0; j < field.length; j++) { DatagridColumn dc = new DatagridColumn(); // 获取属性的名字 String name = field[j].getName(); dc.setField(name); dc.setTitle(column.get(name)); dc.setWidth(80); columnList.add(dc); } String columnJson = JSON.toJSONString(columnList, SerializerFeature.UseSingleQuotes); System.out.println("json格式的column为:"+columnJson); columnJson = "["+columnJson+"]"; /* //columns需要后台生成 String columns = "[["; columns = columns + "{field:'applyDate',title:'日期',width:80},"; columns = columns + "{field:'proBriefName',title:'项目简称',width:80},"; columns = columns + "{field:'activityCode',title:'财务计划编号',width:80},"; columns = columns + "{field:'applicant',title:'申请人',width:80},"; columns = columns + "{field:'amount',title:'金额',width:80},"; columns = columns + "{field:'fundPurpose',title:'经费用途',width:80},"; columns = columns + "{field:'loanNo',title:'借款单号',width:80}"; columns = columns + "]]"; */ try { columnJson = URLEncoder.encode(columnJson,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println(columnJson); //根据条件查询总数 Long total = financeService.loanCount(page); dg.setTotal(total); //根据条件查询List List
loanList = financeService.loanList(page);//这里是重点 dg.setRows(loanList); dg.setColumns(columnJson); return dg; }
之前都是用实体bean加载记录数据,再放到datagrid的rows里面,然后springmvc的jackson自动将其序列化为json数组传到前台,
但是现在如果实体类的属性不固定(大多数情况下都是这个),该怎么办?我这里给个思路:
我用了一个ResultBean来加载返回的结果记录集,这个ResultBean里有两个属性,第一个是记录的第一列的标题rowTag,第二个属性就是自第二列之后每一列下的值,因为列数不固定,所以就用了Map
data来获取,后台查出几个记录,就put对应的kew,value进去,最后再写个方法,根据结果集、表头Title和Field映射Map、行标签,生成Map类型的rows,这个转换方法核心就是遍历map再加载,如下:
/**
* 根据结果集、表头Title和Field映射Map、行标签,生成Map类型的rows
* @param rlist
* @param colMap
* @param rowTag
* @return
*/
public List
总之,一句话,原理最重要,
后台返回对应的json格式(注意,json格式是最核心的),前台就能生成相应的界面。至于json数据怎么生成,不同的人有不同的实现方式。哦了!
|