从客户端请求key/value数据,经过参数绑定,绑定到controller形参上
处理器适配器调用springmvc提供的参数绑定组件将key/value数据转换为controller方法的形参
参数绑定组件:在springmvc早期版本使用PropertyEditor(只能将字符串转换为java对象),后期使用converter(可以进行任意类型转换)
springmvc提供了很多converter,特殊情况下需要自定义(如日期数据)
converter默认支持
- HttpServletRequest
- HttpServletResponse
- HttpSession
- Model/ModelMap
- 简单类型
@RequestParam
对简单类型进行参数绑定,不使用必须名称与传入参数一致
可以指定参数是否必须传入
可以设默认值
@RequestParam(value="id",required="true",defaultValue="")
converter绑定pojo
易发生乱码,在web.xml中添加post乱码过滤器
页面中input的name的和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo
自定义参数绑定实现日期类型绑定
将请求的日期数据串转换为日期类型,要转换的日期类型和pojo属性类型保持一致
需要向处理器适配器中注入自定义的参数绑定组件
<mvc:annotation-driver conversion-service="conversionService"/>
<!--自定义参数绑定-->
<bean id="conversionService" class="org.springframework.format.support.formattingConversionServiceFactoryBean">
<!--转换器-->
<property name="converters">
<list>
<!--日期类型转换-->
<bean class="xxx.xxx.xxx.xxx"/>
</list>
</property>
</bean>
public class CustomerDateConverter implements Converter<String,Date>{
public Date convert(String source){
//yyyy-MM-dd HH:mm:ss
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try{
//转换直接返回
return simpleDateFormat.parse(source);
}catch(ParseException e){
e.printStackTrae();
}
//绑定失败,返回空
return null;
}
}