1. 程式人生 > 實用技巧 >Spring boot 專案中put提交Date資料時出現type=Bad Request, status=400狀態碼

Spring boot 專案中put提交Date資料時出現type=Bad Request, status=400狀態碼

1.問題原因

 經過測試發現,當客戶端頁面提交日期為空時會出現以下異常,如果提交日期不為空則不會出現上述問題。出現這種錯誤的原因是沒有對程式碼中的Date型引數進行格式化,接收為null的日期型別引數時,出現了轉換異常。一般是頁面的資料與資料庫的Date資料型別不同導致的。

2.解決辦法

  為後臺用於接收日期型別並存入資料庫的屬性進行日期的格式化。

1、為該屬性加上格式化註解:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)(資料庫中的日期格式)

如果接收日期的為實體類屬性則直接在該屬性上加,如果為方法引數直接加在方法引數前。

2、使用日期型別轉換器,定義一個日期型別轉換器將他交給spring容器管理,在轉換時會自動呼叫。使用時實現Converter介面介面中泛型第一個引數為源型別第二個引數為目標型別。

@Component
public class StringToDateConvert implements Converter<String, Date> {
   // 日期轉換器
   private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   @Override
   public Date convert(String s) {
       Date date = null;
       try {
          if(s!=null && !"".equals(s)){
              date = format.parse(s);
          }
       } catch (ParseException e) {
           e.printStackTrace();
      }
       return date;
   }
}