Spring MVC 前端ajax传入多个参数(包含数组)后端controller的一次性接收

来源:互联网 发布:js floatparse 编辑:程序博客网 时间:2024/06/10 09:38

如上图,ajax中传入到后台的参数包含了数组和普通属性,那么在后端如何接收这些参数呢?

如果,采用request.getParamter("roleName");的方式,那么就要一个参数一个参数的取,这样不灵活。

Spring MVC 早就想到这种情况了,因此,可以自定义一个PO类或者VO类:

package com.paic.test.po;import java.io.Serializable;import java.util.List;public class RoleResourcePO implements Serializable{private static final long serialVersionUID = 1L;private String roleName;private String roleIdentify;private String roleDesc;private List<Integer> menuIdArr;public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public String getRoleIdentify() {return roleIdentify;}public void setRoleIdentify(String roleIdentify) {this.roleIdentify = roleIdentify;}public String getRoleDesc() {return roleDesc;}public void setRoleDesc(String roleDesc) {this.roleDesc = roleDesc;}public List<Integer> getMenuIdArr() {return menuIdArr;}public void setMenuIdArr(List<Integer> menuIdArr) {this.menuIdArr = menuIdArr;}}
controller中可以这样处理:

@RequestMapping(value = "/role/addRole/submit",method = RequestMethod.POST)public @ResponseBody Map<String,Object> submitAddRole(RoleResourcePO roleResourcePO,HttpServletRequest request){Map<String,Object> repMap = new HashMap<String,Object>();try{xxxService.addRole(roleResourcePO);//.............}catch(Exception e){}return repMap;}

这样参数roleResourcePO就能一次性全部拿到前端的参数了。

(注:上图中的menuIdArr数组作为参数传到后端的时候,需要用toString处理,否则报错,而且不能使用JSON.stringify(menuIdArr),否则在后端controller中的List中会得到这样奇怪的值:第一个值[1,最后一个为3] 带了中括号,这个问题上一篇有解释了。)

最后,如果前端只传一个数组,那么可以使用

@RequestParam 这个注解:

下面介绍一下URL中传递数组参数方法:

使用ajax方式传递:

code
1
2
3
4
5
6
7
8
9
10
varparam = {titles:['col1','col2','col3']}; 
$.ajax({url:"dd.php", type:"post", data:param, async:false, dataType:"json", cache:false, error:function(data) { 
        rtnObj = data.responseText; 
    }, beforeSend:function(XMLHttpRequest) { 
        //ajaxStart(); 
    }, complete:function(XMLHttpRequest, textStatus) { 
        //ajaxComplete(); 
    }, success:function(data) { 
        rtnObj = data; 
    }});

在springMVC中controller类接收数组参数的方法:

code
1
2
3
4
5
6
@RequestMapping(value="/save", method = RequestMethod.POST) 
@ResponseBody 
publicString save(@RequestParam(value = "titles") String[] titles){ 
    System.out.println(titles); 
    returnnull
}

 


0 0
原创粉丝点击