首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SpringMVC 日期類型雙向綁定:@DateTimeFormat 註解替代自定義 Converter

     編輯:程式設計綜合問答

問題

前端傳字符串日期,後端需轉 `java.util.Date` 入庫;查詢時 `Date` 轉字符串顯示。不想寫兩個 `Converter`。

最簡方案:JSR-356 註解

public class MyForm {
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday; // 前端 "2024-01-15" 自動綁定

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
}

SpringMVC 默認註冊 `FormattingConversionService`,識別 `@DateTimeFormat`/`@NumberFormat` 自動雙向轉換。

全局默認格式配置

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addFormatterForFieldType(Date.class, new DateFormatter("yyyy-MM-dd"));
    }
}

舊版本兼容

  • Spring 3.0+ 均支持 `@DateTimeFormat`。
  • 若用 `Xml` 配置:`` 並注入 `FormattingConversionServiceFactoryBean`。

注意

  • 前端傳值必須**嚴格匹配 pattern**,否則拋 `TypeMismatchException`。
  • 建議前端統一傳 **ISO 8601** (`yyyy-MM-dd'T'HH:mm:ss.SSSZ`),後端用 `@DateTimeFormat(iso = ISO.DATE_TIME)`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved