当传入后台参数太多并且这些参数属于某个类时,可以把这些参数封装成对象,形成对象数组,这样,可以使对象自身的参数一一对应,并把封装好的对象数组,赋给一个参数,通过这一个参数,把对象所有的值传入后台,再通过解析,把这个参数解析成对象数组(此时值已经对应好了),后台写方法时需要什么参数直接get就行了。
如何在前台(以js页面为例)把众多参数对应的封装成对象数组:
// 提交
saveRoleAccount: function() {
// 定义传入后台的参数
var param = {
jsonStr: '',
deleteIds: '',
roleId: ''
}
roleId = GLOBAL.ID;
deleteIds = $("#deleteIds").val(deleteIdArr.join()).val();
// 定义user对象,放对象的参数
var user = {};
// 获取user对象的属性值
user.userAccount = $this.val();
//电话号码
user.userPhoneNumber = $phone.val();
//用户id
user.id = id;
// 定义arr对象数组 放入的是对象 比如:[{a1,b1,c1},{a2,b2,c2},{a3,b3,c3},{a4,b4,c4},{a5,b5,c5}]
var arr = [];
// 把对象放入对象数组arr中
arr.push(user);
// JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
// 把arr字符串放入jsonStr 中,所以我们只需要把jsonStr 传入后台就能得到arr中所有的参数
param.jsonStr = JSON.stringify(arr);
param.roleId = roleId;
param.deleteIds = deleteIds;
// 调用方法,在这个方法通过ajax里把值传入后台
submitAccount(param);
},
后台接收:
/**
* saveAccountRole:(设置账号角色). <br/>
* @param jsonStr 前台数据 json字符串
* @param deleteIds 删除id
* @param roleId 角色id
*/
@RequestMapping(value = "/auth/saveAccountRole.do", method = RequestMethod.POST)
@ResponseBody
public String saveAccountRole(String jsonStr, String deleteIds, Long roleId) {
//获取角色list数据(对象数组)
List < SysUserRole > userList = new ArrayList < SysUserRole > ();
if (StringUtils.isNotBlank(jsonStr)) {
userList = JSON.parseArray(jsonStr, SysUserRole.class);
}
try {
//保存角色信息
authservice.saveRoleAccount(userList, deleteIds, roleId);
} catch(Exception e) {
return JSONUtil.error(e.getMessage());
}
return JSONUtil.success("保存成功");
}