数据请求对象封装

后台中,经常需要有带分页的条件查询,需要将当前页,每页条数,以及其它条件传到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)){
            
        }
    }
原文地址:https://www.cnblogs.com/-scl/p/7389376.html