自定义数据绑定(转换器和格式化)
一般情况下,使用基本数据类型和POJO类型的参数数据已经能够满足需求,然而有些特**殊类型的参数时无法在后台进行直接转换的,**但也有特殊数据类型无法直接及逆行数据绑定,必须先经过数据转换,例如日期数据。
针对特殊数据类型,就需要开发者 自定义转化器 或 格式化
转换器: spring框架提供了一个Converter用户将一种类型的对象转化为另一种类型的对象。 自定义Converter类需要实现org.springramework.core.convert.converyer.Converter接口。
public interface Converter<S,T>{ T convert(S source); //S时源类型),T是目标类型 }
格式化: Formatter与Converter的作用相同,只是Formatter的源类型必须是一个String类型,而Converter可以是任意类型。 使用Formatter自定义转化器需要实现org.springframework.format.Formatter接口。
public interface Formatter<T>extends Printer<T>,Paster<T>{ }
日期特殊类转换器和格式化。
转换器
第一步编写控制类
//日期控制器 @Controller public class DateController { @RequestMapping("/customDate") public String customDate(Date date){ System.out.println("date="+date); return "success"; } }
第二步在Springmvc -config.xml 中配置转换器
<bean id="conversionServer" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="org.chen.Converter.DateConverter"></bean> </set> </property> </bean>//到这一步我们的转换器已经配置成功
第三步 将配置的converServer配置到spring中
<mvc:annotation-driven conversion-service="conversionServer"/> //表头加入 mvc xmlns:mvc="http://www.springframework.org/schema/mvc" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
第四步 测试
利用Post请求输入获得的结果
格式化
第一步创建一个自定义转换器
/* 使用Formatter自定义转换器 * * * */ public class DateFormatter implements Formatter<Date> { // 声明输入的格式 private String datePattern="yyyy-MM-dd HH:mm:ss"; // 声明 simpleDateFormat对象 private SimpleDateFormat simpleDateFormat; public String print(Date date, Locale arg1){ return new SimpleDateFormat().format(date); } //先执行parse方法 public Date parse(String source, Locale locale) throws ParseException{ simpleDateFormat =new SimpleDateFormat(datePattern); return simpleDateFormat.parse(source); } }
第二步 同样的在springmvc-config.xml中配置自定义转换器的配置文件
<!-- 自定义类型格式化转换器配置--> <bean id="conversionServer" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <set> <bean class="org.chen.Converter.DateFormatter"></bean> </set> </property> </bean>
第三步 将自定义转化器配置到Spring中
<mvc:annotation-driven conversion-service="conversionServer"/>
第四步 运行 测试结果