@Param和@RequestParam是什么关系呢?其实它们没有关系,就跟Java和JavaScript,雷锋和雷锋塔一样,拥有相似的外表,其实作用是不一样的,@Param是地处Dao层,是为了传递多个参数,解决的是可读性和直观性;而@RequestParam是位列Controller层,作用是为获取前端参数,解决的是前后端参数不一致的问题。所以它们没有关系!
=======================================================================
(一) 转自:https://class.imooc.com/course/qadetail/251374
1、@RequestParam注解用于将请求参数绑定到Controller的方法参数上。
以下三种情况需要加@RequestParam注解:
a. 当请求参数的参数名与方法中参数名称不一致,导致绑定失败时,要加@RequestParam注解,并设置name或value属性值为请求参数的参数名。
b. 当请求参数必须传时,要加@RequestParam注解,其中required值默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
c. 当要设置请求参数的默认值时,要加@RequestParam注解,通过设置defaultValue值。
2、使用List是为了接收表单中复选框提交的数据。复选框在提交的时候,会提交选中的每一项。
例如,表单中要提交的信息如下:
提交的数据如下:
3、使用Map为了说明可以使用Map接收表单数据,表单中name值就是Map中的key。使用Map可以代替实体类Form。
=======================================================
(二)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value
:参数名required
:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。defaultValue
:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
=======================================================
(三) 转自:http://t.zoukankan.com/zlw-xf-p-9464929.html
@RequestParam注解的作用及用法
最简单的两种写法,在写接口时:加或不加@RequestParam注解的区别
第一种写法参数为非必传,第二种写法参数为必传。参数名为userId
第二种写法可以通过@RequestParam(required = false)设置为非必传。因为required值默认是true,所以默认必传
第二种写法可以通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名
第二种写法可以通过@RequestParam(defaultValue = "0")指定参数默认值
用法如下:
====================================================================
(四) 转自:https://www.jianshu.com/p/06667e4580a8
1、可以对传入参数指定参数名
**错误信息:**
**HTTP Status 400 - Required String parameter 'aa' is not present**
2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
// required=false表示不传的话,会给参数赋值为null,required=true就是必须要有
@RequestMapping("testRequestParam")
public String filesUpload(
@RequestParam(value="aa", required=true) String inputStr,
HttpServletRequest request)
3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,这个不可以