@RequestParam详解以及加与不加的区别

Posted moxiaotao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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=? 这种





以上是关于@RequestParam详解以及加与不加的区别的主要内容,如果未能解决你的问题,请参考以下文章

@RequestParam加与不加的区别

@RequestParam加与不加的区别

@RequestParam注解加与不加的区别

Springmvc 加与不加@requestparam有啥区别

JS中函数名后面的括号加与不加的区别和作用

js调用函数时括号加与不加的区别,function()&function