数据请求对象封装
后台中,经常需要有带分页的条件查询,需要将当前页,每页条数,以及其它条件传到Controller进行查询,这时我们可以写一个公共的类来处理数据请求。
通常在前台将所需要的数据放在对象数组中,然后将对象数组变成字符串传到Controller,然后Controller进行处理
数据请求对象封装类:
package com.***.cms.constants; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * jquery.datatable 数据请求对象封装 * 2017年2月6日 下午1:45:23 */ public class DataTableRequest { /** 需要处理的对象数组 */ private static JSONArray dataArray; private int iDisplayStart = 0; // 起始索引 private int iDisplayLength = 0; // 每页显示的行数 public DataTableRequest() { } /** * 初始化获取请求参数 * @param aoData */ public DataTableRequest(String aoData) { dataArray = JSONArray.parseArray(aoData); for (Object object : dataArray) { JSONObject obj = (JSONObject) object; String name = obj.getString("name"); if (StringUtils.equals(name,"iDisplayStart")) this.iDisplayStart = obj.getIntValue("value"); if (StringUtils.equals(name,"iDisplayLength")) this.iDisplayLength = obj.getIntValue("value"); } } /** * 根据参数名称获取对应的值 * @param searchName * @return */ public String getSearchValue(String searchName){ for (Object object : dataArray) { JSONObject obj = (JSONObject) object; String name = obj.getString("name"); if (StringUtils.equals(name,searchName)) return obj.getString("value"); } return null; } public int getiDisplayStart() { return iDisplayStart; } public void setiDisplayStart(int iDisplayStart) { this.iDisplayStart = iDisplayStart; } public int getiDisplayLength() { return iDisplayLength; } public void setiDisplayLength(int iDisplayLength) { this.iDisplayLength = iDisplayLength; } }
例,前台:
<script type="text/javascript"> $("input").click(function(){ var data = [ {"name":"address","value":"重庆"}, {"name":"age","value":"24"}, {"name":"name","value":"张三"} ] $.ajax({ url:"/merchants/testResult", data:{result:JSON.stringify(data)} }); }) </script>
Controller:
@RequestMapping("/testResult") public void testResult(String result){ DataTableRequest d = new DataTableRequest(result) ; String name = d.getSearchValue("name") ; if(StringUtils.isNotEmpty(name)){ } }