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

发布于 2022-09-12 01:32:51 字数 1001 浏览 14 评论 0

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那些都试过....所以要怎么解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧梦荧光笔 2022-09-19 01:32:52

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

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

json方式,

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

或者表单提交(key,value)

@RequestMapping(value = "/getFormsByParam")
    @ResponseBody
    public ServerResponse getFormsByParam(@ModelAttribute req){
        。。。
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文