1. 程式人生 > >【springmvc】@RequestParam詳解以及加與不加的區別

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

 以前寫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=? 才能執行相應的方法

第二種 可帶引數也可不帶引數

 就是說你輸入  localhost:8080/list  以及 localhost:8080/list?parentId=?  方法都能執行

當然你也可以設定 @RequestParam 裡面的required為false(預設為true 代表必須帶引數) 這樣就跟第二種是一樣的了

如下:

@RequestMapping("/list")
	public String test(@RequestParam(required=false)  Long parentId) {
		.....
	}
	
當然你還可以設定裡面的defaultValue的屬性

如下:

@RequestMapping("/list")
	public String test(@RequestParam(defaultValue="0")  Long parentId) {
	...	
	}
	

	
	
這樣在地址裡面也可以不帶引數,如果帶了引數會接收,不帶引數會預設為0

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

但是如果你加了value屬性

@RequestMapping("/list")
	public String test(@RequestParam(value="id")  Long parentId) {
		..
	}
	

	

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