【Struts2】:Struts2的型別轉換

連江偉發表於2016-06-30
       所有的MVC框架,都需要負責解析HTTP請求引數,並將請求引數傳遞給控制器元件。此時,問題出現了:HTTP請求引數都是字串型別的,但Java語言又是強型別的,因此MVC框架必須將這些字串引數轉換成相應的資料型別——這個工作是所有的MVC框架都應該提供的功能。

        表現層資料的流向以及所需的型別轉換如下圖所示:


        Struts2提供了非常強大的型別轉換機制,Struts2的型別轉換可以基於OGNL表示式,只要我們把HTTP引數(表單元素和其他get/post的引數)命名為合法的OGNL表示式,就可以充分利用Struts2的型別轉換機制。
        除此之外,Struts2提供了很好的擴充套件性,開發者可以非常簡單地開發出自己的型別轉換器,完成字串和自定義複合型別之間的轉換(例如,完成字串到Person例項的轉換),如果型別轉換中出現未知異常,型別轉換器開發者無須關心異常處理的邏輯,Struts2的conversionError攔截器會自動處理該異常,並且在頁面上生成提示資訊。總之,Struts2的型別轉換器提供了非常強大的表現層資料處理機制,開發者可以利用Struts2的型別轉換機制來完成任意的型別轉換。
Struts2內建的型別轉換器
        對於大部分的常用型別,開發人員根本不用去管型別轉換,Struts2可以完成大多數常用的型別轉換。這些常用的型別轉換時通過Struts2內建的型別轉換器完成的,Struts2已經內建了字串型別和如下型別之間的相互轉換的轉換器。
boolean和Boolean:完成字串和布林值之間的轉換。
char和Character:完成字串和字元之間的轉換。
int和Integer:完成字串和整型值之間的型別轉換。
long和Long:完成字串和長整型值之間的型別轉換。
float和Float:完成字串和單精度浮點值之間的轉換。
double和Double:完成字串和雙精度浮點值之間的轉換。
Date:完成字串和日期型別之間的轉換,日期格式使用使用者請求所在Locale的short格式。
陣列:在預設情況下,陣列元素是字串,如果使用者提供了自定義型別轉換器,也可以是其他複合型別的陣列。
集合:在預設情況下,假定集合元素型別為String,並建立一個新的ArrayList封裝所有的字串。
        因為Struts2提供了上面這些型別轉換器,如果需要把HTTP請求引數轉換成上面的這些型別,則根本不用開發者進行任何的特殊處理。這也是所謂的框架的好處所在,將很多的基礎服務為開發人員封裝好,我們直接使用即可,大大的的提高了開發效率,也為開發人員及減輕了工作量。

相關文章