博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring mvc :Required String parameter 'oid' is not present
阅读量:7144 次
发布时间:2019-06-28

本文共 799 字,大约阅读时间需要 2 分钟。

  hot3.png

环境:Spring 4.3.1

104708_xqFx_269725.png

通过Postman进行测试时提示出错103324_stbp_269725.png

 

103455_rWBr_269725.png

出现这个问题感到很奇怪,在另外一个项目中也是进行如此的使用,都没有出现这种情况,也是通过同样的方式进行接口测试。

通过查看RequestParamMethodArgumentResolver (该类支持带有@RequestParam注解的参数或带有MultipartFile类型的参数)的源码发现最终还是通过request进行参数获取

112151_sTO5_269725.png

而顺着源码往下看在RequestFacade  类中的parseParameters方法进行参数解析

112630_l53v_269725.png

但该方法有进行请求头判断,如果是multipart/form-data类型话,就直接跳出就不会进行参数获取。

这个时候突然想到在spring中进行文件上传需要配置CommonsMultipartResolver,于是配置后再看源码

发现是通过DefaultMultipartHttpServletRequest进行参数获取,这样就能获取到参数。再看另外一个项目果然有配置,所以能够访问。

 

一般通过浏览器进行请求时contentType为application/x-www-form-urlencoded,当文件上传时为multipart/form-data类型,这次出现这个问题就是由于自己粗心没有注意到这个细节,导致浪费了时间。

一般出现这种问题可以通过以下两个方面进行判断:

1 检查参数是否存在(如果不是必须参数可通过

120821_3G11_269725.png

进行申明)

2 检查请求头contenType类型默认post请求为application/x-www-form-urlencoded,如果请求头为multipart/form-data(文件上传的话,需要配置spring的CommonsMultipartResolver)

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/luckyi/blog/737660

你可能感兴趣的文章
杨校老师课堂之JavaScript右下角广告弹框教程
查看>>
书籍:Python渗透测试实战 Practical Security Automation and Testing(python)- 2019.pdf
查看>>
scrapy中最为重要的两个对象Request、Response
查看>>
2019年的第一场雪来的既猛又烈,突然想分享点东西
查看>>
为和高通达成和解,苹果支付了60亿美元
查看>>
Google X实验室又一项目“毕业”,熔盐储能项目Malta拆分并独立
查看>>
有头结点的单向链表
查看>>
在windows下如何新建爬虫虚拟环境和进行scrapy安装
查看>>
瑞士类脑芯片公司aiCTX发布全球首款动态视觉专用AI处理器DynapCNN,引领人工智能动态视觉处理时代到来...
查看>>
报表没完没了怎么办? | 润乾集算器提效报表开发
查看>>
Material Design 实战 之第二弹——滑动菜单详解&实战(DrawerLayout & NavigationView)...
查看>>
使用 HttpRequester 更方便的发起 HTTP 请求
查看>>
Python连接MySQL数据库的多种方式
查看>>
elasticsearch索引建立过程
查看>>
unity脚本开发:一些重要的类和类间的关系图
查看>>
不想备案所以想买个美国主机,听说美国的比较慢?
查看>>
SSH Permissions xxxx for 'xxxx' are too open.
查看>>
贝塞尔曲线原理(简单阐述)
查看>>
IS NOT NULL
查看>>
自由软件基金会主席 RMS 谈全面监控
查看>>