您的位置:首页 > 编程语言 > Java开发

SpringMVC 学习笔记2 - 参数绑定

2017-11-02 07:41 507 查看

第一种、默认支持的类型绑定

HttpServletRequest

HttpServletResponse

HttpSession

Model/ModelMap

ModelMap是Model接口的实现类,将model数据填充到request域,向页面传递数据。

Model.addAttribute()效果等同于req.setAttribute + url显式传参。

ApplicationContext

参考:http://www.importnew.com/18384.html - spring里头各种获取ApplicationContext的方法

方式一:request.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE)

第二种、简单类型绑定

支持整型、字符串、单精度/双精度、布尔型。
当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。

可以通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。


@RequestParam - 形参注解

1. name:映射传参名和形参名
2. defaultValue:定义默认值
3. required:定义参数是否必须存在

@RequestMapping的params与@RequestParam的required之间的关系探索,在没有userId参数的前提下大实验:
1. params="userId"     & required=false & int userId     --> 访问失败,400,提示需要参数
2.                       required=false & int userId     --> 访问失败,500,提示null不能赋给int类型变量
3.                       required=true & int userId      --> 访问失败,400,提示需要参数
4.                       required=false & Integer userId --> 访问成功,值为null
5. defaultValue = "-2" & required=false & int userId     --> 访问成功,值为-2
6. defaultValue = "-4" & required=true  & int userId     --> 访问成功,值为-4(设置defaultValue,required就无效)


第三种、简单POJO类型绑定

如果传过来的参数属于两个不同的POJO对象,可以加前缀区别。

例如,对象User{name,pass}和Address{id,name},名字就

定义为:”u.name”,”addr.name”。这里的u和addr就是处理方法的形参名。

第四种、包装POJO类型绑定

如果POJO对象里又有POJO对象,参数名可以这样设置:”name1.name2”。

例如,User对象里有Address对象,那么name=”address.id”。

第五种、自定义参数绑定(如日期类型Date):

方法1:在POJO类的日期属性加注解@DateTimeFormat(pattern = “yyyy-MM-dd”)。

方法2:定义转换器

1. 定义Converter<String, Date>的实现类DateConverter
2. 声明<mvc:annotation-driven conversion-service="conversionService"/>
3. 声明FormattingConversionServiceFactoryBean并传入DateConverter作为参数,具体如下:

```xml
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.springmvc.DateConverter"/>
</set>
</property>
</bean>
```


集合类型:分两种,基本数据类型的集合和POJO类型的集合。



包含多个集合属性的类:

@ModelAttribute:

Spring的底层把形参值设置进request域,key为首字母小写的形参类型名。
如果形参注解了@ModelAttribute(value),会把注解的value值作为key。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: