溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決使用@RequestParam遇到404錯誤的問題

發(fā)布時間:2021-08-18 09:05:08 來源:億速云 閱讀:396 作者:小新 欄目:開發(fā)技術

小編給大家分享一下如何解決使用@RequestParam遇到404錯誤的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

@RequestParam的使用所遇到的404

問題困擾:

如何解決使用@RequestParam遇到404錯誤的問題

最近在學習springmvc,但是學習到@RequestParam的使用過程中,遇到了以上的404報錯問題,讓我很無奈,教程的可以,為什么我的不可以?。?!此時有點煩躁?。?!

問題所在及解決:

經過百度之后的說法也是一堆一堆的,最后得知是jsp頁面?zhèn)鞯絚ontroller類方法的形參類型不適合,jsp頁面中寫的是字符串,controller類方法的形參我寫成了Integer類型(畢竟id定義成了Integer類型的)

下面附上jsp頁面代碼圖:會發(fā)現(xiàn)value="/items/editItems.action?id='${item.id }'"中的id為字符串有單引 號'',這是錯誤的寫法?。?!

如何解決使用@RequestParam遇到404錯誤的問題

重點是這里:正確的應該是value="/items/editItems.action?id=${item.id }"去掉單引號即可

以下附上controller類方法圖:

下面是第一種方式:

要求形參名稱id與jsp中通過request傳過來的參數(shù)名稱一致

如何解決使用@RequestParam遇到404錯誤的問題

第二種方式:

不要求形參名稱items_id與jsp中通過request傳過來的參數(shù)名稱一致,但是需要加上聲明 @RequestParam(value="id")指定request傳入參數(shù)名稱和形參進行綁定

如何解決使用@RequestParam遇到404錯誤的問題

@RequestParam注解在使用過程一些注意

在項目開發(fā)過程的一些教訓經驗記錄

http接口定義如下:

@RequestMapping(value="/fetchResData",method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE)
void fetchResData(
  @RequestParam(value = "id")Long id 
 ,@RequestParam(value = "start") String start
 ,@RequestParam(value = "end") String end);

請求方式為POST,Content-Type是json格式,@RequestParam的required屬性值默認是true。

客戶端在調用該接口,正常傳入參數(shù)值,但是請求沒有進入服務端設置的斷點。根據(jù)跟蹤的異常提示如下:

{
  "timestamp": 1560339674464,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.web.bind.MissingServletRequestParameterException",
  "message": "Required Long parameter 'id' is not present",
  "path": "/Service/fetchResData"
}

進一步分析客戶端的請求體信息,如果接口使用@RequestParam綁定基本數(shù)據(jù)類型情況下,請求的參數(shù)是接在URL后面,消息體是沒有數(shù)據(jù)的。而接口定義使用的consumes = MediaType.APPLICATION_JSON_VALUE。因此無法從消息體中獲取有效的參數(shù)值。從而服務端認為接口參數(shù)是必填的,而實際情況是空值。

針對上述問題的解決辦法

1、修改接口定義中
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE

等同于http中content-type為

Content-Type=mutipart/form-data和Content-Type=application/x-www-form-urlencoded
2、Post方式改為Get方式

以上是“如何解決使用@RequestParam遇到404錯誤的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI