一般情况下,使用基本数据类型和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"/>
第四步 运行 测试结果