新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
SpringMVC日期類型接收空值異常問題解決方法
最近遇到SpringMVC寫個controller類,傳一個空串的字符類型過來,正常情況是會自動轉成date類型的,因為數(shù)據(jù)表對應類類型就是date的
創(chuàng)新互聯(lián)歡迎聯(lián)系:13518219792,為您提供成都網站建設網頁設計及定制高端網站建設服務,創(chuàng)新互聯(lián)網頁制作領域10多年,包括成都柴油發(fā)電機等多個行業(yè)擁有豐富的網站運維經驗,選擇創(chuàng)新互聯(lián),為企業(yè)保駕護航。
解決方法是在controller類的后面加個注解:
@InitBinder
protected void initDateFormatBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}注意,上面的代碼CustomDateEditor構造函數(shù)要傳個true參數(shù),表示允許傳空字符串來進行日期類型轉換
CustomDateEditor 里源碼
public class CustomDateEditor extends PropertyEditorSupport {
private final DateFormat dateFormat;
private final boolean allowEmpty;
private final int exactDateLength;
public CustomDateEditor(DateFormat dateFormat, boolean allowEmpty) {
this.dateFormat = dateFormat;
this.allowEmpty = allowEmpty;
this.exactDateLength = -1;
}
....
}Spring Bean類的裝載是通過BeanWrapperImpl來實現(xiàn),可以寫個簡單的例子,驗證這個問題,DispatchInfoModel 類是我自己的測試類,里面有signDate這個date類型的參數(shù)
設置為true的情況,是可以正常運行的
public class mytest {
public static void main(String[] args) {
DispatchInfoModel tm = new DispatchInfoModel();
BeanWrapper bw = new BeanWrapperImpl(tm);
bw.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
bw.setPropertyValue("signDate", "");
System.out.println(tm.getSignDate());
}
}設置為false的情況,會拋出異常:
public class mytest {
public static void main(String[] args) {
DispatchInfoModel tm = new DispatchInfoModel();
BeanWrapper bw = new BeanWrapperImpl(tm);
bw.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));
bw.setPropertyValue("signDate", "");
System.out.println(tm.getSignDate());
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享名稱:SpringMVC日期類型接收空值異常問題解決方法
文章轉載:http://www.dlmjj.cn/article/ppiddh.html


咨詢
建站咨詢
