1. 程式人生 > >Springmvc提交日期型別引數

Springmvc提交日期型別引數

  1. 背景介紹

  2. 在springmvc框架中,前臺傳入到後臺的form會經過springmvc自動封裝到pojo類中,後臺接受的時候可以在引數內直接接受這個java類。

  3. 傳參 通常情況下,前臺的表單的型別諸如int,string等,都會根據pojo中欄位的型別自動轉換。所以為我們省去了不少麻煩,但很可惜其中不包括日期型別。

  4. 原因 因為日期的格式多種多樣,spring自身不適合對其進行封裝。好在spring給出了便捷的方法給我們自己轉換資料型別。

  5. 具體實現

在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得到驗證結果了。