處理@PathVariable註解允許參數為空、允許不傳參數的問題
說明
設置可以不傳:
但是請求的時候,仍然提示projectId必傳:
這是因為url要求帶參,屬於REST參數。
解決辦法
設置多個url path即可,有的傳REST參,有的不傳。當然required必須是false
這個問題以前解決過,——還是要溫習一下比較好呀
補充:接收參數註解@PathVariable 與 @RequestParam與 不使用註解接收參數的情況
@RequestParam使用場景:
@RequestParam: 顧名思義,獲取請求參數的
@RequestParam的兩個屬性:value 獲取值 , required 為 true 必填
1. 1前端地址情景:
http://localhost:8989/SSSP/emps?pageNo=2
如果想獲取地址中的 pageNo的值 ‘2′> ,則使用@RequestParam
1.2.前端BootStrap請求情景:
傳單個參數:
queryParams:{id,id} // (此時id已獲取到js,如var id = row.id )
傳多個參數:
queryParams:function(params){ return{ type:#(‘type').val, accountName:#(‘accountName').val } }
1.3 後臺獲取上面兩種傳參方式:
Public Object getXiFeiList(@RequestParam Map<String,Object> params){ //使用方式一:使用get(“key”)獲取後使用 params.get(“id”); //使用方式二:作為Query的參數創建對象,直接使用 Query query = new Query(params); List<DictDo> dictList = dictSevice.list(query); }
@PathVariable使用場景:
@PathVariable:顧名思義,獲取url地址中的一部分值
1. 前端地址單參數情景:
http://localhost:8989/SSSP/emp/type
如果想獲取地址中的 emp/type 中的 ‘type ‘,則使用@PathVariable
2. 前端地址多參數情景
http://localhost:8989/SSSP/emp/7/5
如果想獲取地址中的 emp/7/5 中的‘7”5’,則使用@PathVariable
3. 後臺獲取:
接收單個參數
String addD(@PathVariable(“type”) String type)
接收多個參數
String addD(@PathVariable(“type”) String type,@PathVariable(“id”) Long id)
不使用註解就可以接收參數的情況
情況1. 前端Js中發送ajax請求data:{‘id’,id}情景:
remove(id){ function(){ $.ajax(){ url:prefix+”/remove”, type:”post”, data:{‘id',id}//ajax使用data傳值時使用@PathVariable ....... } } }
情況1.後臺獲取:
public R remove(Long id){} // 獲取後就可以直接使用
情況2. 前端JS中發送ajax請求data: $(‘#addLoanForm’).serialize()情景:
$.ajax({ cache: true, type: "POST", url:"/loansign/signProject/creditSave", data: $('#addLoanForm').serialize() //重要:將前臺表單中的數據序列化,序列化的內容是name }
情況2.後臺獲取:
public R creditSave( SignCreditDO signCredit){}//使用對象接收數據
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- @PathVariable和@RequestParam傳參為空問題及解決
- 聊聊@RequestParam,@PathParam,@PathVariable等註解的區別
- SpringBoot @PathVariable使用時遇到的問題及解決
- 基於params、@PathVariabl和@RequestParam的用法與區別說明
- @PathVariable 如何自動填充入實例對象中