3种方式:
1.自定义全局转换器。ConversionService
a.定义转换类我public class StringToDateConverter implements Converter<String , Date>{
// 日期类型模板:如yyyy-MM-dd
private String datePattern;
public void setDatePattern(String datePattern) {
this.datePattern = datePattern;
}
// Converter<S,T>接口的类型转换方法
public Date convert(String date) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(this.datePattern);
// 将日期字符串转换成Date类型返回
return dateFormat.parse(date);
} catch (Exception e) {
e.printStackTrace();
System.out.println("日期转换失败!");
return null;
}
}
}
b.配置自定义转换器
<!-- 装配自定义的类型转换器 -->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 自定义的类型转换器 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="priv.yzying.converter.StringToDateConverter"
p:datePattern="yyyy-MM-dd"></bean>
</list>
</property>
</bean>
2.使用@IintBinder,注册控制器转换,配合 PropertyEditorSupport
a.定义属性编辑器,实现 PropertyEditorSupport 类
// 自定义属性编辑器
public class DateEditor extends PropertyEditorSupport {
// 将传如的字符串数据转换成Date类型
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = dateFormat.parse(text);
setValue(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
b.控制器注册属性编辑器
@InitBinder
public void initBinder(WebDataBinder binder){
binder.registerCustomEditor(Date.class,new DateEditor());
}
3.使用WebBindingInitializer注册全局自定义编辑器转换数据
a.定义属性编辑器,实现
// 自定义属性编辑器
public class DateEditor extends PropertyEditorSupport {
// 将传如的字符串数据转换成Date类型
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = dateFormat.parse(text);
setValue(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
b.定义WebBindingInitializer实现类
// 实现WebBindingInitializer接口
public class DateBindingInitializer implements WebBindingInitializer {
@Override
public void initBinder(WebDataBinder binder, WebRequest request) {
// 注册自定义编辑器
binder.registerCustomEditor(Date.class, new DateEditor());
}
}
c.配置自定义转换编辑器
<!-- 通过AnnotationMethodHandlerAdapter装配自定义编辑器 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.fkjava.binding.DateBindingInitializer" />
</property>
</bean>
以上几种方式优先级:@InitBinder > ConversionService > WebBindingInitializer