这个注解用来绑定单个请求数据,既可以是url中的参数,也可以是表单提交的参数和上传的文件
它有三个属性,价值用于设置参数名,defaultValue用于对参数设置默认值,需要为真时,如果参数为空,会报错
好、下面展示具体例子:
首先是vm:
& lt; h2> param1: $ {param1} & lt;/h2> & lt; h2> param2: $ {param2} & lt;/h2>
好吧,就为了展示两个参数
@RequestMapping (value=" https://www.yisu.com/hello1.htm ") 公共字符串hello1 (ModelMap ModelMap、整数param1 int param2) { modelMap。addAttribute (“param1 param1); modelMap。addAttribute (“param2 param2); 返回“你好”; }
这里前面的参数时包装型,后面的参数时原始类型
直接用url请求:
http://localhost: 8080/hello1.htm& # 63; param1=1, param2=2
结果:
<>强但是:强>
如果不传param2:
http://localhost: 8080/hello1.htm& # 63; param1=1
直接就报错了
因为无法将零转换为原始类型
<强>所以:建议所有的参数都用包装类型,别用原始类型强>
<强> 强>
仍然是上面的那个控制器,地址改为
http://localhost: 8080/hello1.htm& # 63; param2=1, param1=2
就是让param2=1, param1=2,想试验下,参数绑定是和顺序有关,还是只和参数名称有关,结果:
所以,springMvc参数绑定只和参数名字有关系
,
如果页面上表单里的参数和代码里的参数名不一样怎么办,这时候就可以用注解了:,
@RequestMapping (value=" https://www.yisu.com/hello1.htm ") 公共字符串hello1 (ModelMap ModelMap, @RequestParam param1 (value=" https://www.yisu.com/zixun/paramTest ")整数,整数param2) { modelMap。addAttribute (“param1 param1); modelMap。addAttribute (“param2 param2); 返回“你好”; }
在param1前面加上了注解,这时候第一个参数只接受paramTest名字的参数,param1此时无效了。
如果此时我们这么请求:
http://localhost: 8080/hello1.htm& # 63; param1=1, param2=2
春直接报错,必须要这么请求了:
http://localhost: 8080/hello1.htm& # 63; paramTest=1, param2=2
结果:
,
,
有时候页面上的表单客户不填任何值,但是在控制器里希望它有默认值
可以这样:
@RequestMapping (value=" https://www.yisu.com/hello1.htm ") 公共字符串hello1 (ModelMap ModelMap, @RequestParam param1 (defaultValue=" https://www.yisu.com/zixun/5 ")整数,整数param2) { modelMap。addAttribute (“param1 param1); modelMap。addAttribute (“param2 param2); 返回“你好”; }
这里用了RequestParam的defaultValue属性,如果url参数中没传param1,也不会报的错,使用默认值,比如我们这么请求:
http://localhost: 8080/hello1.htm& # 63; param2=2
结果:
也就是说,我们赋的值会修改默认值
RequestParam还有个属性:要求
意思是必须传值,否则报错,就是这么任性
@RequestMapping (value=" https://www.yisu.com/hello1.htm ") 公共字符串hello1 (ModelMap ModelMap @RequestParam(需要=true)整数param1,整数param2) { modelMap。addAttribute (“param1 param1); modelMap。addAttribute (“param2 param2); 返回“你好”; }详解弹簧引导网络项目之参数绑定