@RequestParam詳解以及加與不加的區別


 以前寫controller層的時候都是默認帶上 @RequestParam 的, 今天發現不加@RequestParam 也能接收到參數

 

下面我們來區分一下加與不加的區別

這里有兩種寫法

 

 

[html]  view plain  copy
 
  1. @RequestMapping("/list")  
  2.     public String test(@RequestParam  Long parentId) {  
  3.           
  4.     }  



 

[html]  view plain  copy
 
  1. @RequestMapping("/list")  
  2.     public String test( Long parentId) {  
  3.           
  4.     }  


第一種必須帶有參數,也就是說你直接輸入localhost:8080/list 會報錯 不會執行方法 只能輸入localhost:8080/list?parentId=? 才能執行相應的方法

第二種 可帶參數也可不帶參數  就是說你輸入  localhost:8080/list  以及 localhost:8080/list?parentId=?  方法都能執行

 

當然你也可以設置 @RequestParam 里面的required為false(默認為true 代表必須帶參數) 這樣就跟第二種是一樣的了

如下:

 

[html]  view plain  copy
 
  1. @RequestMapping("/list")  
  2.     public String test(@RequestParam(required=false)  Long parentId) {  
  3.         .....  
  4.     }  
  5.       

 

當然你還可以設置里面的defaultValue的屬性

如下:

[html]  view plain  copy
 
  1. @RequestMapping("/list")  
  2.     public String test(@RequestParam(defaultValue="0")  Long parentId) {  
  3.     ...   
  4.     }  
  5.       
  6.   
  7.       
  8.       

這樣在地址里面也可以不帶參數,如果帶了參數會接收,不帶參數會默認為0

 

里面還有一個value屬性也講一下, 前面所有的方法 傳入的參數必須為parentId 才能接收到值

但是如果你加了value屬性

 

[html]  view plain  copy
 
  1. @RequestMapping("/list")  
  2.     public String test(@RequestParam(value="id")  Long parentId) {  
  3.         ..  
  4.     }  
  5.       
  6.   
  7.       


這樣會用id 代替parentId  也就是說你地址里面傳入的參數名稱為id localhost:8080/list?id=? 這種


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM