我正在尝试在spring的MVC WebDataBinder中注册自定义日期编辑器,以使spring解析我的自定义日期fomat(确切地说,它是ISO格式)。 通过实现CustomWebBindingInitializer,我成功了。
public static class CustomWebBindingInitializer implements WebBindingInitializer {
@Override
public void initBinder(WebDataBinder webDataBinder, WebRequest webRequest) {
CustomDateEditor dateEditor = new CustomDateEditor(new ISODateFormat(), true);
webDataBinder.registerCustomEditor(Date.class, dateEditor);
}
}
Spring正在使用我的编辑器并成功解析日期,但是尽管如此,日期字段没有受到约束,我收到了关于请求的错误:
"org.springframework.validation.BindException",,"defaultMessage":"Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'from'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: \"2016-08-01T10:35:04.126Z\""
值得注意的是: 当我使用默认弹簧的格式MM / DD / YYYY与我的自定义编辑器时,我得到相同的错误,这意味着spring正在使用我的编辑器而不是默认编辑器。
当我使用默认的spring解析器,格式为MM / DD / YYYY时,一切正常,日期会受到约束,这当然是显而易见的。
任何人都有同样的问题吗?
答案 0 :(得分:1)
将格式添加到registerCustomEditor
并尝试:
SimpleDateFormat format = new SimpleDateFormat("Required format");
webDataBinder.registerCustomEditor(Date.class, dateEditor, new CustomDateEditor(format, true));
答案 1 :(得分:1)
使用PropertyEditorSupport而不是CustomDateEditor解决问题 Set date format for an input text using Spring MVC
答案 2 :(得分:0)
使用所需的日期格式(如SimpleDateFormat
"yyyy-MM-dd"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
用必需的CustomDateEditor
注册dateForat
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));