Springmvc提交日期型別引數
阿新 • • 發佈:2018-12-12
-
背景介紹
-
在springmvc框架中,前臺傳入到後臺的form會經過springmvc自動封裝到pojo類中,後臺接受的時候可以在引數內直接接受這個java類。
-
傳參 通常情況下,前臺的表單的型別諸如int,string等,都會根據pojo中欄位的型別自動轉換。所以為我們省去了不少麻煩,但很可惜其中不包括日期型別。
-
原因 因為日期的格式多種多樣,spring自身不適合對其進行封裝。好在spring給出了便捷的方法給我們自己轉換資料型別。
-
具體實現
在controller層中,加入以下程式碼段
@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));//true:允許輸入空值,false:不能為空值 }
可以解決這個問題。但是這個時候Date型別的引數是null的話,還是會報錯。採用另外一種方式則更好,為null也不會報錯,就是把請求引數封裝為一個vo類,在對應的類屬性上加上註解,這樣
@DateTimeFormat(iso = ISO.DATE_TIME, pattern = "w:yyyy")
private Date startTime;
或者
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date lastLoginDate;
另外如果使用驗證框架,方法引數這樣寫(@Valid XxxParam param, BindingResult binding) ,就能直接通過BindingResult得到驗證結果了。