WebDataBinder自定义日期编辑器不起作用

时间:2016-09-01 11:29:22

标签: java spring spring-mvc

我正在尝试在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时,一切正常,日期会受到约束,这当然是显而易见的。

任何人都有同样的问题吗?

3 个答案:

答案 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));