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

14 篇文章 0 订阅
5 篇文章 0 订阅

如上图,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
var param = {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 
public String save( @RequestParam (value = "titles" ) String[] titles){ 
     System.out.println(titles); 
     return null
}

 


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值