【springmvc】@RequestParam詳解以及加與不加的區別
阿新 • • 發佈:2019-02-01
以前寫controller層的時候都是預設帶上 @RequestParam 的, 今天發現不加@RequestParam 也能接收到引數
下面我們來區分一下加與不加的區別
這裡有兩種寫法
@RequestMapping("/list")
public String test(@RequestParam Long parentId) {
}
@RequestMapping("/list")
public String test( Long parentId) {
}
第一種必須帶有引數,也就是說你直接輸入localhost:8080/list 會報錯 不會執行方法 只能輸入localhost:8080/list?parentId=? 才能執行相應的方法
第二種 可帶引數也可不帶引數
當然你也可以設定 @RequestParam 裡面的required為false(預設為true 代表必須帶引數) 這樣就跟第二種是一樣的了
如下:
@RequestMapping("/list")
public String test(@RequestParam(required=false) Long parentId) {
.....
}
當然你還可以設定裡面的defaultValue的屬性如下:
這樣在地址裡面也可以不帶引數,如果帶了引數會接收,不帶引數會預設為0@RequestMapping("/list") public String test(@RequestParam(defaultValue="0") Long parentId) { ... }
裡面還有一個value屬性也講一下, 前面所有的方法 傳入的引數必須為parentId 才能接收到值
但是如果你加了value屬性
@RequestMapping("/list")
public String test(@RequestParam(value="id") Long parentId) {
..
}
這樣會用id 代替parentId 也就是說你地址裡面傳入的引數名稱為id localhost:8080/list?id=? 這種