我们在使用SpringMVC时,常常需要把表单中的参数映射到Controller参数bean对象的属性中,但是spring没有提供String转Date的转换器,这就导致spring遇到这种情况时,会使用ObjectToObecjectConverter去处理,直接使用new Date(String originalValue),但是我们知道,java中new Date(String)这个方法是弃用的,如new Date("Thu Mar 17 00:00:00 CST 2016")会变为2016-3-17 14:00:00,导致数据错乱。
解决办法一:创建自定义转换器
可参考:http://manzhizhen.iteye.com/blog/2218996
解决办法二:重写Controller的InitBinder方法
@InitBinder
public void InitBinder(WebDataBinder dataBinder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
本人暂时使用第二种方法。