vue使用fetch.js发送post请求java后台无法获取参数值

Posted Schon_zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue使用fetch.js发送post请求java后台无法获取参数值相关的知识,希望对你有一定的参考价值。

问题:前台vue使用fetch.js发送post请求后,后台 request.getParameter()无法获取到参数值

思路:查阅后,原因为fetch中头文件Content-type这个Header为application/x-www-form-urlencoded导致request请求中的form data变成request payload

处理办法:后台controller中使用流接受数据后,在进行查询操作既可。

  • vue代码
  • /**
     * 获取行业大类
     */
    export const hangyebrief = industryId => fetch(\'/console/good/industry/findIndustry\', {
      industryId: 2
    }, \'POST\');
    

    controller代码

  •     @RequestMapping("findIndustry")
        @ResponseBody
        public AjaxRes findIndustry( HttpServletRequest request,HttpServletResponse response){
            StringBuilder sb = new StringBuilder();
            try(BufferedReader reader = request.getReader();) {
                char[]buff = new char[1024];
                int len;
                while((len = reader.read(buff)) != -1) {
                    sb.append(buff,0, len);
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
            String idString = sb.toString();
            String  industryId = idString.substring(idString.indexOf(":")+1,idString.indexOf("}"));
            AjaxRes aj = new AjaxRes();
            GoodIndustryVo goodIndustry  = new GoodIndustryVo();
            if (industryId != null && industryId != "") {
                goodIndustry.setIndustryId(Integer.parseInt(industryId));
            }
            List<GoodIndustryVo> goodIndustryList = goodIndustryService.find(goodIndustry);
            aj.setObj(goodIndustryList);
            return aj;
        }
    

      

      

以上是关于vue使用fetch.js发送post请求java后台无法获取参数值的主要内容,如果未能解决你的问题,请参考以下文章

vue中axios发送post请求,后端(@RequestParam)接不到参数

在vue中使用axios发送post请求,参数方式

vue中采用axios发送post请求

Vue在axios post请求的对象中发送一个空参数

vue-resource发送post请求服务器接收不到数据

vue-resource可以跨域直接发送POST请求吗?