这一节很有意思,很多东西以前都没深入去了解,红红火火会用就行,这次刚好再学了一遍。
什么是SpringMVC数据绑定
在后台 Controller 方法中,获取前端 HTTP 请求的参数。但是 HTTP 请求传输中,所有参数都是 String 类型。但在方法中,我们获取到的数据已经不仅仅是字符串类型,比如 int 。这期间发生了参数的类型转换。并不是开发人员认为转换的,而是SpringMVC的 HandlerAdapter 组件会在执行 Handler 业务方法之前,完成参数的绑定。
感觉这个转换就是反射+判断
测试
1、服务端需要 int 数据类型参数,如果前端HTTP请求不带任何参数,会报错 500 ,因为基本数据类型int不能赋值null 。但是它对应的包装类 Integer 可以赋值 null。
@RequestMapping(value = "/start01")
@ResponseBody
public String baseType(int type){
return "type:" + type;
}
同时因为我后端要求接收 int 类型,如果前端请求传递的是 String 类型,同样会报错,因为 String 类型不能转换为 int 类型。 当然一样,如果我们用 Interger 接收 ,前端传递 String 类型,比如“abc”等类似。一样会报错,String 类型不能转换为 Integer 类型。
RequestParam
这个注解包含好几个常用的属性
@RequestMapping(value="/packageType")
@ResponseBody
public String packageType(@RequestParam(value="id",required=false,defaultValue="1") Integer id){
return "id:"+id;
}
- value=”id” ,这里确定形参,HTTP请求参数名要和它保持一致
- required=false ,非必填写,可省略
- defaultValue=”1″:若 HTTP 请求中没有 id 参数,默认值为1。
以上代码笔记内容来自付费专栏:案例上手 Spring 全家桶
PS:并没有透露关键内容,纯粹是零碎笔记。如果侵犯版权,请联系我。
本文由老郭种树原创,转载请注明:https://guozh.net/spring-mvc-date-binding/