在SpringMVC中,有时我们会将表单数据直接映射到模型中,一般的数据会直接映射,像是String类型的数据也会映射为Integer数据,但是当映射Date数据时,会出现下面的问题:
Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'beginDate'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'beginDate':
在提交表单时如果我们提交日期的格式像是:1984-1-1这样的形式,就会出现上述的问题,这是因为,Spring的类型转换不支持这种格式。
这时,我们可以自定义类型转换的格式,只需要让我们的控制器继承SimpleFormController类,兵重写下面的方法。
@InitBinder
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
CustomDateEditor dateEditor = new CustomDateEditor(fmt, true);
binder.registerCustomEditor(Date.class, dateEditor);
super.initBinder(request, binder);
}