Spring boot 專案中put提交Date資料時出現type=Bad Request, status=400狀態碼
阿新 • • 發佈:2020-09-06
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; } }