struts2類型轉換

TTP 協議中傳遞的任何內容都是String類型的,所以一旦我們在服務器上需要一個非String類型的對象,例如:int或者Date,那麼我們就需要在收 到 HTTP請求的數據的時候,首先將String類型的數據變換爲我們需要的對應類型的數據,之後再使用。這個過程就是類型轉換 

類型轉換在Struts2中是透明的,即Struts2內置了類型轉換機制。 

一、概述 
在B/S應用中,將字符串請求參數轉換爲相應的數據類型,是MVC框架提供的功能,而Struts2是很好的MVC框架實現者,理所當然,提供了類型轉換機制。

Struts2的類型轉換是基於OGNL表達式的,只要我們把HTML輸入項(表單元素和其他GET/POET的參數)命名爲合法的OGNL表達式,就可以充分利用Struts2的轉換機制。 

    除此之外,Struts2提供了很好的擴展性,開發者可以非常簡單的開發自己的類型轉換器,完成字符串和自定義複合類型之間的轉換。總 之,Struts2的類型轉換器提供了非常強大的表現層數據處理機制,開發者可以利用Struts2的類型轉換機制來完成任意的類型轉換。 

二.常規類型的轉換: 

  比如表單提交的信息有 用戶名,生日, 年齡, Action中對應的數據類型分別是 String, Date, int.沒什麼好說的, Struts2會自動完成. 

  Struts2內建了常用的類型轉換器,如String ,boolean,char,int,long,float,double,Date, 數組(假定元素是String類型), 集合(假定元素是String類型,用ArrayList封裝) 

實現自定義類型轉換器 
實現TypeCoverter接口,或者繼承DefaultTypeConverter實現類(該類實現了TypeCoverter接口),通過繼承該實現類來實現自己的類型轉換器。重寫convertValue方法即可。 

  爲了簡化類型轉換器的實現,Struts2提供了一個StrutsTypeConverter抽象類,這個抽象類是DefaultConverter的子類。實現了方法,並提供了2個不同轉換方向的方法:Object 
convertToString(Map context,String[] values,Class toClass)和String convertFromString(Map context,Object o)。 

三、註冊應用 
實現了自定義類型轉換器之後,將該類型轉換器註冊在Web應用中,Struts2框架纔可以正常使用該類型轉換器。 
關於類型轉換器的註冊方式,主要有3中: 
A、註冊局部類型轉換器:僅僅對某個Action的屬性起作用。 
B、註冊全局類型轉換器:對所有Action的特定類型的屬性都會生效。 

1、局部類型轉換器 
提供如下格式的文件 
文件名:  ActionName-conversion.properties  
內容:多個propertyName(屬性名)=類型轉換器類(含包名),如  date=com.aumy.DateConverter 
存放位置:和ActionName類相同路徑。 

2、全局類型轉換器 
提供如下格式的文件 
文件名:  xwork-conversion.properties 
內容:   多個“複合類型=對應類型轉換器”項組成,如  java.Util.Date=com.aumy.DateConverter 
存放位置:WEB-INF/classes/目錄下。 

四、應用示例 
    由於Struts2對日期轉換顯示時,會顯示日期和時間,現在項目只需要顯示日期,所以採用自定義的類型轉換器來實現日期顯示。 

 

2. 具體註冊應用
局部配置:
ActionName-conversion.properties配置文件

view sourceprint?1 java.util.Date=xxx.xxx.xxxx.DateTypeConverter 

全局配置:
xwork-conversion.properties配置文件

view sourceprint?1 java.util.Date=xxx.xxx.xxxx.DateTypeConverter 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章