ajax传递参数给springmvc一句话总结

来源:互联网 发布:mediawiki seo 编辑:程序博客网 时间:2024/04/29 13:39

http://blog.csdn.net/u011118321/article/details/53789854

ajax传递参数给springmvc一句话总结

通过ajax传递参数给springmvc,经常会因为 参数类型太复杂,或者根本不知道springmvc都支持哪些类型转换,导致后台接收出现各种问题。如果书写格式没有问题仍然接受参数报错,大部分是因为springmvc默认无法支持该种格式的json转换导致的

现在一句话解决,就是用@RequestBody注解接收

下面看一些传参的例子,基本涵盖了大部分的参数传递类型

案例1:简单数组 idList[]

ajax

 $("#test1").on("click",function(){                var idList = new Array();                idList.push("1");                idList.push("2");                idList.push("3");                $.post("/mvc/client1/test1",{idList:idList})   });

java

  /**     * 简单类型list     * explain:包含string int date 等属性     */    @RequestMapping("/test1")    @ResponseBody    public void test1(@RequestParam("idList[]") List<Integer> idList){        for(Integer i: idList){            System.out.println(i);        }    }

案例1中要注意,当你ajax传递一个很简单的数组,本以为后台能够接受到,却总是报错,很可能的原因是:http请求传递数组的时候,为了区别是一个数组,会在数组名称后面加上中括号“[]”,所以后台接受的时候用@RequestParam告诉方法,你要的idList实际上是idList[]就可以了

案例:2:简单对象User (包含id,username)

ajax

  $("#test2").on("click",function(){                var id          =1;                var username    ="fangxin";                $.post("/mvc/client1/test2",{id:id,username:username,birthday:new Date()}) });

java

@RequestMapping("/test2")    @ResponseBody    public void test2(User user){        System.out.println(user.getId());        System.out.println(user.getUsername());        System.out.println(user.getBirthday());    }

这就是最常见的传递参数,如果一个对象的属性都是简单类型,那基本没什么问题

案例3:复杂对象User (包含id,username,String[],List)

ajax

var user = {                    id:1,                    username:"fangxin",                    birthday:new Date(),                    luckyNums:[1,2,3],                    friends:[                        {name:"zhangsan"},                        {name:"lisi"}                    ]                };                $.ajax({                    type: "POST",                    url:"/mvc/client1/test3",                    data: JSON.stringify(user),                    contentType:"application/json"                })            });

java

* 复杂对象     * explain:包含简单list属性、对象list属性     */    @RequestMapping("/test3")    @ResponseBody    public void test3(@RequestBody User user){        System.out.println(user.getId());        System.out.println(user.getUsername());        System.out.println(user.getBirthday());        for(Integer i:user.getLuckyNums()){            System.out.println(i);        }        for(Person p:user.getFriends()){            System.out.println(p.getName());        }    }

案例4:复杂List

ajax

 $("#test5").on("click",function(){                var users = [];                for(var i=0;i<10;i++){                    var user = {                        id:1,                        username:"fangxin",                        birthday:new Date(),                        luckyNums:[1,2,3],                        friends:[                            {name:"zhangsan"},                            {name:"lisi"}                        ]                    };                    users.push(user);                }                $.ajax({                    type: "POST",                    url:"/mvc/client1/test5/",                    data: JSON.stringify(users),                    contentType:"application/json"                     })            });

java

  /**     * 复杂List     */    @RequestMapping("/test5")    @ResponseBody    public void test5(@RequestBody List<User> users){        for(User user:users){            System.out.println(user.getUsername());        }    }

用案例3的方式,依然可以接收到,屡试不爽。
案例5 List

原创粉丝点击