解決Springboot 2 的@RequestParam接收數組異常問題

Springboot 2 的@RequestParam接收數組異常

最近Vue 開發前端,然後向後臺springboot 2 傳遞數組,發現springboot 2 接收數組方式無法使用

-- @RequestParam("ids[]") List<String> ids --

然後拋出以下異常,經過多輪驗證發現@RequestParam(“ids[]”) 失效,無法使用(不知道是BUG,還是改瞭,之前可以的)

Resolved [org.springframework.web.bind.MissingServletRequestParameterException] Required String[] parameter ‘ids[]’ is not present]

所以這裡給出解決方式:

1、後端方法接收去除@RequestParam ,然後使用數組接收 例如:String[] ids

2、前端傳遞數組axios 需要使用 URLSearchParams 包裹數組

3、請求頭中參數傳遞顯示為如圖所示:

無論是axios還是ajax 隻要請求頭傳遞格式是這樣的,後端用String[] ids 接收就行瞭

Springboot 的 用數組接參方法 Post接參 RequestParam

@RequestParam(value = "meetingIds",required = false)

其中value 的值隨傳參改變

加在接參方法的前邊,例:

public  JSONObject getInfo(String searchText, @RequestParam(value = "meetingIds",required = false) List<Long> meetingIds){}

如果傳遞參數的格式是 meetingIds = 1,23,4,5 這樣的 則直接寫參數名meetingIds 即可;

有幾點需要註意:

1、如果是post傳參,前端直接傳數組類型的數據,後臺接參需要吧value改為 meetingIds[] 註意括號

2、如果是參數有可能不傳,則需要設置required = false , 如果不寫,則默認會是true,也就是必然有參數,如果沒參數會報錯,不進入方法。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: