报错:Required String parameter 'XXX' is not present错误的几种可能性
背景了解:
同事對(duì)代碼做了改動(dòng),他在后臺(tái)把原本接收的參數(shù)“username”改成了"id",沒(méi)有把修改的事情通知我。拿到代碼運(yùn)行后發(fā)現(xiàn)前臺(tái)網(wǎng)頁(yè)的內(nèi)容顯示不完整了。下邊是前后對(duì)比圖
報(bào)錯(cuò)信息:
Resolved exception caused by Handler execution: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'id' is not present中文釋義:所需的字符串參數(shù)“id”不存在
錯(cuò)誤分析:
根據(jù)控制臺(tái)報(bào)錯(cuò)的內(nèi)容來(lái)看,沒(méi)有具體指向哪個(gè)文件哪個(gè)類或者方法,這樣的報(bào)錯(cuò)很煩,聯(lián)想到我項(xiàng)目前后運(yùn)行的效果不一樣,猜測(cè)可能是和我左側(cè)菜單欄那有關(guān)系。去看了一下后臺(tái)接口接收的參數(shù)是“id”,頁(yè)面上傳遞的參數(shù)是“username”,問(wèn)題應(yīng)該是頁(yè)面?zhèn)鬟f和后臺(tái)接收的參數(shù)不一致導(dǎo)致
解決辦法:
根據(jù)業(yè)務(wù)需求接收參數(shù)這里保持不變,接收id
public List<Resource> getInfo(@RequestParam("id")String id) {logger.debug("data{}",resourceService.get(id)); return resourceService.get(id);}頁(yè)面這里傳遞的參數(shù)“username”改為“id”
created() {var user = sessionStorage.getItem('user');user = JSON.parse(user);let _para = {//username: user.username,//user對(duì)象是登錄時(shí)存在session里的,直接從session里取出就行id :user.id};this.$fetch('http://' + http.host_port + '/Resource', _para).then(res => {if(res) {}});}刷新頁(yè)面,發(fā)現(xiàn)問(wèn)題解決了
?
在網(wǎng)上還看到幾種情況也會(huì)導(dǎo)致這個(gè)問(wèn)題:
(1)頭文件類型不對(duì),可以在MediaType中選擇合適的類型,例如GET和POST
(2)jquery提交delete時(shí),不支持@RequestParam,只支持@PathVariable形式
(3)api在調(diào)用的時(shí)候,如果存在重類型,但不重名;例如:/id與/name,兩者在類型上是一樣的
(4)傳遞的參數(shù)里面包含特殊符號(hào),比如前臺(tái)傳遞字符串不能包含逗號(hào)等
(5)傳的參數(shù)是undefined
以上幾種情況是網(wǎng)友們遇到的,后期可以證實(shí)一下
總結(jié)
以上是生活随笔為你收集整理的报错:Required String parameter 'XXX' is not present错误的几种可能性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国庆节放假调休安排来了!共7天,中疾控:
- 下一篇: C4D 入门笔记(一)