在 spring mvc 框架中,對於常用的資料型別,有許多內建的型別轉換器用於完成常用的型別轉換。型別轉換是在檢視與控制器相互傳遞資料時發生的。spring mvc 框架對於基本型別(例如 int、long、float、double、boolean 以及 char 等)已經做好了基本型別轉換。對於引用資料型別,springmvc框架也可以將表單資料封裝為該型別的屬性值。
但是,在有些需求中,spring mvc框架內建的型別轉換器是不能滿足需求的。比如:在進行動態條件查詢時,可能需要將日期、整型等資料進行型別轉換。
在以上需求中,可以按生日時間段、以及工資時間段查詢員工資訊。在controller控制器中,我們應該用localdate、和integer來接收客戶端表單資料。這裡需要注意,在controller中,最好用 integer包裝類接收資料,不要用int。這是因為包裝類允許為null,但int 不允許為null。這樣可以根據integer是否為null,來判斷是否有這個條件。
不過,由於是動態條件查詢,所以,對於文字框的資料使用者是可以輸入,也可以不輸入的。這樣一來,如果在生日文字框中沒有輸入資料,提交給伺服器的資料為空字串:""。如果使用springmvc預設的型別轉換器,就會丟擲轉換異常:無法將""轉換為日期型別。同樣,springmvc預設的型別轉換器,也無法將""轉換為integer型別。
當 spring mvc 框架內建的型別轉換器不能滿足需求時,開發者可以開發自己的型別轉換器。由開發者自定義的型別轉換器,來告訴springmvc的轉換規則。
在spring mvc 框架中,提供 converter介面,該介面可以定義一種資料型別轉換成另一種資料型別的演算法。這裡 s 表示源型別,t 表示目標型別。如果開發者需要自定義型別轉換器,只需要實現converter介面,重寫convert方法就可以了。
日期型別轉換器:
publicinteger型別轉換器:class localdatetypechange implements converter-\\d-\\d"))
//當表單資料為空,或格式不合法時,則返回null
return
null
; }
}
public自定義轉換器類寫好了以後,必須要註冊才能被springmvc容器所識別。這樣當請求引數是匹配自定義型別轉換器指定的資料型別時,springmvc就不再使用預設的型別轉換器,而使用開發者自定義的型別轉換器。class integertypechange implements converter
//當表單資料為空,或格式不合法時,則返回null
return
null
; }
}
這裡,我們採用內建tomcat整合springmvc的配置。註冊springmvc自定義型別轉換器時,需要在配置類中,新增以下**:
@configuration註冊完成以後,自定義型別轉換器就生效了。在應用控制器中,書寫**測試一下:@enablewebmvc
)
public
webmvcconfigurer }}
在伺服器控制台,可以看到列印的結果:
起始日期:null 結束日期:1995-09-10 起始工資:null 結束工資:10000可以看到,當表單資料不滿足指定格式時,得到null。表單資料滿足指定格式時,才進行型別轉換。
springmvc自定義型別轉換器,除了可以對jdk已有的型別進行轉換以外,也可以對自定義的實體類、集合等進行轉換,實現方式大同小異。
SpringMVC 的型別轉換
什麼是型別轉換?spring mvc 中在控制器方法中 把請求中的引數對映為指定型別,指定型別可以是自己定義的型別,這就是spring的型別轉換。型別轉換的框架原理 術語定義 a.servletrequest 請求 b.databuilder 類似於dispatcherservlet 在整個框架原理...
SpringMvc 型別轉換 Converter
springmvc 怎麼使用型別轉換的呢 實現 converter 介面 最長用的 是時間型別的轉換 否則 400 接收日期型別引數 注意 springmvc 在接收日期型別引數時,如不做特殊處理 會出現400語法格式錯誤 解決辦法 1.全域性日期處理 public string test date...
springmvc之資料型別轉換
一 springmvc整合資料轉換框架 1 自定義型別轉換器,可根據需求實現converter genericconverter converte ctory之一皆可。如string phonenumber 自定義sring轉phonenumbermodel的型別轉換器 public class s...