springmvc接收數組類型參數


直接在方法上使用List<Bean>報不能實例化錯誤!

必須將List<Bean>放在某個對象里作為屬性方可接收。具體見如下例子

前端代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>page</title>
</head>
<body>
<h1>數組傳參數測試</h1>

<script src="/webpagetest/js/jquery-2.0.3.min.js"></script>

<script type="text/javascript">

    function test() {
        $.ajax({
            url:'/webpagetest/pageData',
            data:{
                'id':1,
                'order[0].column':'name',
                'order[0].dir':'asc',
                'order[1].column':'phone',
                'order[1].dir':'desc'
            },
            success:function (rt) {
                alert(rt);
            },
            error:function () {
                alert('error');
            }

        });
    }


    function test2() {
        $.ajax({
            url:'/webpagetest/pageData2',
            data:{
                'id':1,
                'order[0][column]':'name',
                'order[0][dir]':'asc',
                'order[1][column]':'phone',
                'order[1][dir]':'desc'
            },
            success:function (rt) {
                alert(rt);
            },
            error:function () {
                alert('error');
            }

        });
    }
</script>

<button onclick="test()">測試</button>
<button onclick="test2()">測試2</button>
</body>
</html>

后台代碼

@RequestMapping("/pageData")
    @ResponseBody
    public String index(@RequestParam(value="order[0].column",required = false) String order0column,
                        HttpServletRequest request,
                        MyVO vo){

        System.out.println("獲取單個參數:");
        System.out.println(order0column);

        System.out.println("獲取所有參數:");
        Map<String,String[]> params =  request.getParameterMap();
        for(Map.Entry<String,String[]> entry:params.entrySet()){
            System.out.println("key:"+entry.getKey()+" value:"+ Arrays.asList(entry.getValue()));
        }

        System.out.println("獲取VO");
        System.out.println("id:"+vo.getId());
        System.out.println("orders:");
        for(Order o:vo.getOrder()) {
            System.out.println("column:" + o.getColumn()+" dir:"+o.getDir());
        }


        return "ok";
    }

    @RequestMapping("/pageData2")
    @ResponseBody
    public String index(@RequestParam(value="order[0][column]",required = false) String order0column,
                        HttpServletRequest request /*,
                       MyVO2 vo2*/){

        System.out.println("獲取單個參數:");
        System.out.println(order0column);

        System.out.println("獲取所有參數:");
        Map<String,String[]> params =  request.getParameterMap();
        for(Map.Entry<String,String[]> entry:params.entrySet()){
            System.out.println("key:"+entry.getKey()+" value:"+ Arrays.asList(entry.getValue()));
        }

//        System.out.println("獲取VO2");
//        System.out.println("id:"+vo2.getId());
//        System.out.println("orders:");
//        for(List<String> o:vo2.getOrder()) {
//            System.out.println("column:" + o.get(0)+" dir:"+o.get(1));
//        }

        return "ok";
    }

兩個實體對象(必須是獨立的文件中的類,否則一直報找不到構造函數的錯誤)

public class MyVO{

    private int id;

    private List<Order> order = new ArrayList<Order>();

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public List<Order> getOrder() {
        return order;
    }

    public void setOrder(List<Order> order) {
        this.order = order;
    }
}
public class Order{
    private String column;
    private String dir;


    public String getColumn() {
        return column;
    }

    public void setColumn(String column) {
        this.column = column;
    }

    public String getDir() {
        return dir;
    }

    public void setDir(String dir) {
        this.dir = dir;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM