1. Struts2 類型轉(zhuǎn)換使用介紹
Struts2的類型轉(zhuǎn)換幾乎支持Java中各種數(shù)據(jù)類型的轉(zhuǎn)換。甚至開發(fā)者還可以自定義自己的類型轉(zhuǎn)換功能,但是,我們并不推薦開發(fā)人員自定義的類型轉(zhuǎn)換功能。原因有二:一是遵循IT界著名名言“不重復(fù)發(fā)明輪子”,不在前人的成果上再次浪費(fèi)時間。而是類型轉(zhuǎn)換本身在開發(fā)的過程中就不適合占用大量的時間和人力,增加成本。
1.1 基本數(shù)據(jù)類型轉(zhuǎn)換功能
在struts2的內(nèi)部,有著一系列非常完整的類型轉(zhuǎn)換功能,所以在基本類型轉(zhuǎn)換的功能上,我們并不需要花費(fèi)太多的時間去進(jìn)行深究,直接在應(yīng)有的方向上進(jìn)行使用。
1.2 List集合類型數(shù)據(jù)類型轉(zhuǎn)換功能
在這里有一個比較重要的內(nèi)容,當(dāng)我們在Action類中定義我們所需要的List類型變量的時候,要注意List集合中的元素是何種對象?這里有兩種方法。一是在Action類中定義的時候使用泛型,就可以明確該集合是什么對象的。二是在Action所在包的下面建一個屬性文件:這里要注意該屬性文件是一個局部類型轉(zhuǎn)換屬性定義文件。文件名要以ActionName開頭,然后以--conversion.properties結(jié)尾。這表示是對該Action中List集合類型指定元素類型。
1.3 Set集合類型數(shù)據(jù)類型轉(zhuǎn)換功能
Set集合類型變量有一個顯性的要求,就是變量必須顯示定義它的類型。否則Struts2不知道該變量是哪一種Set集合,這樣系統(tǒng)就找不到在屬性文件中定義的所以和元素對象類型。
在屬性文件中除了繼續(xù)定義元素對象類型之外,還需要定義該機(jī)和類型變量的索引。其中定義索引的通用格式為 " KeyProperty_SetName = 屬性 "。
在數(shù)據(jù)輸入的JSP頁面中,筆者使用OGNL中的 “ makeNew ”API 。先建立對象,然后依次輸入對象的各個屬性數(shù)據(jù)。
其他和List集合并沒有什么太大的區(qū)別。
2. 類型轉(zhuǎn)換發(fā)生異常的處理方案
類型轉(zhuǎn)換其實就是調(diào)用某些Struts2已經(jīng)定義的Java代碼。不過只要有Java這門語言書寫的程序都不可避免異常處理。
2.1 Struts2自帶異常提示
如果不使用任何其他代碼直接輸入錯誤,也就是類型轉(zhuǎn)換失敗的話,就會直接彈出一些屬于struts2 自己的異常提示
當(dāng)然,我們也可以使用<s:filederror />這么一個標(biāo)簽,就能比較好的展示出類型轉(zhuǎn)換異常。
2.2 Struts2 局部異常提示定義屬性文件使用介紹
例如:
invalid.fieldvalue.fieldName=xxxx
這樣就是一個局部的異常提示。前面是固定的,然后后面呢,就是在Jsp頁面中定義的field的name。
2.3 Struts2 全局異常提示定義屬性文件使用介紹
例如:
xwork.default.invalid.fieldvalue={0}類型轉(zhuǎn)換錯誤
注意:* 屬性文件中的“{ 0 }”其實就是占位符,如果有多個屬性的類型轉(zhuǎn)換有異常發(fā)生,可依次以"{0}","{1}"定義多個屬性。然后這些屬性名會自動一一對應(yīng)于屬性文件中的定義。 *