栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HTML多加了个空格导致Spring找不到PostMapping

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HTML多加了个空格导致Spring找不到PostMapping

报错代码 HTML



    
    Get infos


    
Controller
@PostMapping(path = "/test", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public EntityInfo createNewEntityWithImage(@RequestParam String imageName, @RequestParam("file") MultipartFile file) throws IOException {
        try (InputStream inputFileData = file.getInputStream()) {
            System.out.println("createNewEntityWithImage");
            DbEntityInfo info = imagesSvc.putNew(imageName, file.getOriginalFilename(), inputFileData);
            return mapItem(info);
        }
    }
解释 可以看到,在HTML中,我标注的数据格式是 multipart/form-data ,并且在PostMapping的注解中,我标注的数据格式也是 consumes = MediaType.MULTIPART_FORM_DATA_VALUE。
理论上来说,这两个是可以匹配到一起的,因为他们标注的数据类型都是 multipart/form-data。 错误重现

可以看到在这里,request的内容种类被转化为了application/x-www-form-urlencoded,并不是我们需要的multipart/form-data。并且相应的,在Spring的后台Console中,我们也能发现Spring对于没有找到合适的Controller所发出的警告:2021-10-25 10:43:05.208 WARN 16414 — [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter ‘value’ for method parameter type String is not present]。

原因 在HTML文件中,标注数据格式时,多加了个一个空格 multipart/form-data[space],就导致了浏览器在处理页面数据的时候,不知道数据格式是 multipart/form-data,所以就自动把数据格式按照默认值,也就是 application/x-www-form-urlencoded的方式处理后,传给了Spring后台。
Spring后台在接收到 application/x-www-form-urlencoded的数据格式后,开始拿着这个数据格式去自己的Controllers里边问,有没有需要这个数据格式的。并且由于在传递时,文件的id也是对应的,所以Spring在找Controller的时候,还得带上看看Controller需要的参数是不是 file、imageName。
然而,除了 createNewEntityWithImage外,没有方法需要 file、imageName这两个参数。而 createNewEntityWithImage需要的数据类型又是 multipart/form-data,就导致了Spring找不到相应的处理方法。前台也就返回了400的错误状态。
解决 将HTML中的空格删去,并且重新加载Chrome中的页面,以防止Chrome使用加载进缓存中的错误HTML文件。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号