處理@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。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: