详解弹簧引导网络项目之参数绑定

  

  

这个注解用来绑定单个请求数据,既可以是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

  

结果:   

详解弹簧引导网络项目之参数绑定”>,</p>
  <p>但是,如果url中对param1赋值了:</p>
  <p> http://localhost: 8080/hello1.htm& # 63; param1=3, param2=2 </p>
  </p> <p>结果:
  <p>, <img src=

  

也就是说,我们赋的值会修改默认值

  

  

RequestParam还有个属性:要求

  

意思是必须传值,否则报错,就是这么任性

        @RequestMapping (value=" https://www.yisu.com/hello1.htm ")   公共字符串hello1 (ModelMap ModelMap @RequestParam(需要=true)整数param1,整数param2) {   modelMap。addAttribute (“param1 param1);   modelMap。addAttribute (“param2 param2);   返回“你好”;   }

详解弹簧引导网络项目之参数绑定