欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springmvc如何使用map接收参数

程序员文章站 2022-03-04 15:13:15
目录springmvc 使用map接收参数第一种情况:请求参数有多组第二种情况:所有的参数不分组用map接收参数的几个注意的问题1、接受map的参数不能写value2、对于多个同名字段springmv...

springmvc 使用map接收参数

开发过程中有时候我们并不知道前端都会传递哪些参数给到后端. 为方便扩展接口功能, 在请求参数不改变的情况下兼容前端新增的入参的需求, 我们会考虑使用map接受参数. 这样无论前端加减参数, controller的入参是不需要变动的.

第一种情况:请求参数有多组

如:一组个人信息, 一组地址信息

请求参数:

{
    "personinfo": {
        "name1": "zona",
        "name2": "carl",
        "age": 23
    },
    "address": {
        "上海": "code1",
        "北京": "code2"
    }
}

controller层代码:

    // map的value参数类型设置为object
    @postmapping("/map")
    public void map(@requestbody map<string, object> mapparam){
        system.out.println(mapparam);
    }

controller层接受参数:

springmvc如何使用map接收参数

第二种情况:所有的参数不分组

请求参数:

{
    "name1": "zona",
    "name2": "carl",
    "age": 23
}

controller层代码

   // map的value类型是string
    @postmapping("/map")
    public void map(@requestbody map<string, string> mapparam){
        system.out.println(mapparam);
    }

controller层接受参数

springmvc如何使用map接收参数

用map接收参数的几个注意的问题

public void tbconordpricesubmit(@requestparam(value="cdlistkeyarrayfront",required=false) string[] cdlistkeyarrayfront,@requestparam(required=false) map parmap,
httpsession session, httpservletrequest request, httpservletresponse response, model model, tbconordvo tbconordvo)

1、接受map的参数不能写value

否则不能自动打包前面的字段,其与模型驱动,属性驱动不冲突,最多就是数据冗余

2、对于多个同名字段

map只会取第一个,不会变成字符数组,或用,隔开,此时只能用属性驱动,或模型驱动

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。