java - Spring自动类型转换不适用于字符串到日期

标签 java spring spring-mvc

在 web mvc 中的请求处理程序方法中,我做了如下操作:

@RequestMapping(value = "/{day}", method = RequestMethod.GET)
    @ResponseBody
    public String dateValidation(
            @PathVariable @DateTimeFormat(pattern = "dd-mm-yyyy") Date day) {
        System.out.println("date is " + day);
        return "date";
    }

根据 spring 文档所述 here

它会自动将String转换为Date类型。

为什么我需要在 Controller 中添加 Initbinder

@InitBinder
    public void initBinder(WebDataBinder binder) {
        // Although spring says it is automatic
        binder.addCustomFormatter(new DateFormatter("dd-mm-yyyy"));
    }

我错过了什么吗?

谢谢

最佳答案

因为您正在自定义模式中传递日期,所以 Spring 不知道如何将其解析为正确的日期对象。这就是为什么您需要添加自定义格式化程序,Spring 将使用它来将您的模式转换为 Date 对象。

关于java - Spring自动类型转换不适用于字符串到日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623750/

相关文章:

Java - 比较类?

java - 如何在 Spring Data 中延迟加载集合?

java - 如果领先的驼峰式单词只有一个字母长,为什么 Jackson 2 不能识别第一个大写字母?

java - 使用tomcat和spring进行异步http请求处理

java - Reactor 3.0.x可以与Spring4.3.x版本一起使用吗?

java - Web.xml(tomcat) 与 ApplicationContext.xml(spring) 哪个先加载?

java - 避免启用 Log4j/Slf4j 调试检查

java - 什么 Java 库可以将 PostgreSQL 数组文字映射到 Java 数组或列表?

java - 如何使用Picocontainer Web?

java - Ldap 单元测试模拟命名枚举