Controller方法Map接收不到前端传来的参数?

JAVA做后端,框架是Spring + SpringBoot + MyBatis,小程序我是这么请求的

wx.request({
    url:  'http://localhost:8080/form/getFormsByParam',
    method:  'POST',
    data:  {
        state: currentTab,
        userId: openid
    },
    success:  function  (res)  {
        var data = res.data.data;
    }
})

JAVA后端的代码是这样的...

    @RequestMapping(value = "/getFormsByParam")
    @ResponseBody
    public ServerResponse getFormsByParam(Map<String, String> map){
        if(map == null){
            return ServerResponse.createBySuccess();
        }
        System.out.println(map.toString());
        List<Form> forms = formService.getFormsByParam(map);
        return ServerResponse.createBySuccess(forms);
    }

map打印是出来总是 {},这是怎么回事?
如果加上注解,小程序会报请求400,而且明明已经制定POST,但请求还是GET

getFormsByParam(@RequestBodyMap<String, String> map)

如果小程序改header格式也不能,json那些都试过....所以要怎么解决?

阅读 9.7k
2 个回答

不清楚小程序的api,提供一些思路

  1. 直接一个 Map 并不能拿到任何参数
  2. 如果用的是json传输数据,需要加@RequestBody注解,同时要确定前端使用了正确的Content-Type,这里需要application-json
  3. 如果用form-data或者form-urlencoded,用@RequestParam

json方式,

@RequestMapping(value = "/getFormsByParam")
    @ResponseBody
    public ServerResponse getFormsByParam(@RequestBody req){
        。。。
    }

或者表单提交(key,value)

@RequestMapping(value = "/getFormsByParam")
    @ResponseBody
    public ServerResponse getFormsByParam(@ModelAttribute req){
        。。。
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题