后台SpringMVC接收map类型参数

背景:有时候我们可能需要发ajax到后台,并且携带一些参数,如果参数数量少,我们可以直接在后台写参数便可,如果前台提交的是表单,我们可以利用spring mvc提供的封装参数的方法进行接收,但假如是另外一种情况,前台向后台发送ajax请求并且携带很多参数,而后台并没有对应的实体类进行接收又该如何处理,当然很多人可能会想到,根据请求中携带的参数,在后台定义一个实体类,在根据mvc的封装特性接收不就好了,这样的做法是可以实现的,但是假如很多地方都是这样的多参数的请求,难道都根据参数去建立对应的实体类吗?这样就会让后台变得臃肿,冗余,所以,后来思考是否可以使用map作为参数,传递到后台接收,这里记下笔记,作为记录。

刚刚我说的这种情况,可能在后台系统中会遇到的比较多,最常见的就是搜索框表单,搜索框内有多个搜索条件,有时可能有一二十个,这种情况下,我们当然考虑使用map来解决。因为map的数据结构为key-value形式,所以我们可以遍历搜索框表单,将表单的name作为map的key,表单的value作为map的value.思路就到这里,接下来贴代码:

假如是上面类似这样的搜索框,我们点击搜索的时候,要根据用户选择或输入的条件去发送请求到后台获取相应的数据,这样就不可避免的会携带很多参数(可能有些搜索框更复杂)。

首先:遍历表单组成map,在通过map转化成json字符串

//得到搜索框数据
function  getFromData() {
    var dataMap = new Map();
    $("#form_id input,select").each(function(){
        var value= $(this).val();      //input 值
        var name= $(this).attr('name');
        dataMap.set(name,value);
    });
   //Map转为Json的方法
    let obj= Object.create(null);
    for (let[k,v] of dataMap) {
        obj[k] = v;
    }
    return obj;
}


//发送ajax请求(第一种方式,推荐):1.contentType 
  • 15
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值