第一种:使用注解:
@DateTimeFormat(pattern="yyyy-MM-dd")
此注解需要配置 < mvc:annotation-driven/>标签
第二种:
通过自定义的编辑器实现日期格式的转换,
使用@InitBinder装配自定义编辑器,
标注了@InitBinder注解的方法会在控制器初始化时调用,
编写一个用于 初始化的类
public class BaseController {
/**
* 使用@InitBinder解决SpringMVC日期类型无法绑定的问题
* @param dataBinder
*/
@InitBinder
public void initBinder(WebDataBinder dataBinder){
dataBinder.registerCustomEditor(Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
}
}
随后在控制层的controller继承此类即可。
public class UserController extends BaseController{
第三种: 使用ConversionService
Spring类型转换体系的核心接口,
解决前台form表单中时间字符串到后台Date数据类型的转换问题,
编写自定义转换器,自定义转换的规则,实现日期格式的转换
1.使用Converter转换接口
作用:将一种类型转换成另一种类型的对象 方法:convert()
2.自定义转换器( StringToDateConverter.java )
实现convert()方法:完成字符串到java.util.Date类型指定格式的转换
3.装配自定义的ConversionService
实现步骤:
1.编写转换器StringToDateConverter ,实现Converter接口
public class StringToDateConverter implements Converter<String, Date> {
private String datePattern;
public StringToDateConverter(String datePattern){
// System.out.println("StringToDateConverter convert ============== " + datePattern );
this.datePattern = datePattern;
}
@Override
public Date convert(String s) {
// TODO Auto-generated method stub
Date date = null;
try {
date = new SimpleDateFormat(datePattern).parse(s);
System.out.println("StringToDateConverter convert date ===== > " + date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
2.在SpringMVC的配置文件中编写ConversionService的配置类
<bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="smbms.tools.StringToDateConverter">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
</bean>
</list>
</property>
</bean>
3.在annotation-driven配置中指定conversion-service为自己刚刚写的myConversionService,覆盖掉SpringMVC默认实现的conversionService
<mvc:annotation-driven conversion-service="myConversionService">