zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Ubuntu18.04查看ip地址
    使用Vmware克隆功能快速创建多台虚拟机
    使用Vmware快照功能对虚拟机进行备份还原
    安装Vmware并创建Ubuntu虚拟机
    使用vmware+Ubuntu搭建hadoop集群
    Gitee图床+PicGo+Typora便捷在博客中使用图片
    使用Gitee Pages+hugo免费搭建你的博客
    Scheduler的WaitRun存在卡死的问题
    使用OpenJDK进行Delphi Android开发
    citus
  • 原文地址:https://www.cnblogs.com/hdwang/p/9122877.html
Copyright © 2011-2022 走看看