Spring MVC Controller 接收ajax传来的数组参数
1var arry = ['1','2','3']; 2//就是最普通的jquery ajax向后台直接发送数据 3$.ajax({ 4 type:'post', 5 url:'/demo/path', 6 //traditional默认是false,如果是false,则传递的参数为: 7 //data[]:1 8 //data[]:2 9 //data[]:3 10 //这里设置为true,使传递参数变成: 11 //data:1 12 //data:2 13 //data:3 14 //不过无论哪种实际上都不影响后台接受,稍作区分即可,下面会提到 15 traditional: true, 16 data:{ 17 data:arry 18 }, 19 success:function(result){ 20 console.info(result); 21 } 22});
下面是controller接受数则参数的方法,需要使用RequestParam指明value名称,正如上面所说,若传递的数据格式是data[]:3,则RequestParam的value是data[], 若传递的数据格式是data:3,则RequestParam的value是data,后面既可以用List接收,也可以用数组接收.
1@RequestMapping("/demo/path") //traditional默认是true方式 2public boolean createRsp(@RequestParam(value = "data")String[] data) { 3 System.out.println("--data-size-"data.length); 4 return false; 5} 6 7@RequestMapping("/demo/path") //traditional默认是flase方式 8public boolean createRsp(@RequestParam(value = "data[]")String[] data) { 9 System.out.println("--data-size-"data.length); 10 return false; 11}
上面用到了jQuery ajax的traditional参数,那么他的作用是什么:
一句话:规定是否使用传统的方式进行序列化(参数序列化)。 默认的话traditional为false,即jquery会深度序列化参数对象,traditional 为true阻止深度序列化。