版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Struts2Struts2第五課第五課 轉(zhuǎn)換器轉(zhuǎn)換器講師:李玉明講師:李玉明背景l(fā)開發(fā)Web應(yīng)用程序與開發(fā)傳統(tǒng)桌面應(yīng)用程序不同,Web應(yīng)用程序?qū)嶋H上是分布個不同的主機(jī)(當(dāng)然也可以同一個主機(jī),不過比較少見)上的兩個進(jìn)程之間互交。這種互交建立在HTTP之上,它們互相傳遞是都是字符串。服務(wù)器可以的接收到的來自用戶的數(shù)據(jù)只能是字符串或字符數(shù)組,而在服務(wù)器上的對象中,這些數(shù)據(jù)往往有多種不同的類型,如日期(Date),整數(shù)(int),浮點數(shù)(float)或自定義類型(UDT)等。因此,我們需要服務(wù)器端將字符串轉(zhuǎn)換為適合的類型。背景l(fā)同樣的問題也發(fā)生在使用UI展示服務(wù)器數(shù)據(jù)的情況。HTML的Form控件不
2、同于桌面應(yīng)用程序可以表示對象,其值只能為字符串類型,所以我們需要通過某種方式將特定對象轉(zhuǎn)換成字符串。HelloWorld.java package i18n;import java.util.Locale;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.util.LocalizedTextUtil;public class HelloWorld extends ActionSupport private String msg;private Locale loc = Locale.US;pu
3、blic String getMsg() return msg;public Locale getLoc() return loc;public void setLoc(Locale loc) this .loc = loc;Overridepublic String execute() msg = LocalizedTextUtil.findDefaultText(HelloWorld , loc);return SUCCESS; Struts.xml i18nHelloWorld.jsp i18nHelloWorld.jsp i18nHelloWorldLocale:
4、 LocaleConverter.java package i18n;import java.util.Locale;import java.util.Map;public class LocaleConverter extends ognl.DefaultTypeConverter Overridepublic Object convertValue(Map context, Object value, Class toType) if (toType = Locale. class ) String locale = (String) value) 0 ;return new Locale
5、(locale.substring( 0 , 2 ), locale.substring( 3 ); else if (toType = String. class ) Locale locale = (Locale) value;return locale.toString();return null ; perties ljava.util.Locale = i18n.LocaleConverter測試在Locale輸入框中輸入“zh_CN”,按“Submit”提交:ConverterlStruts 2.0中的轉(zhuǎn)換器都必須實現(xiàn)ognl.TypeCon
6、verter接口。 OGNL包提供了ognl.DefaultTypeConverter類幫助實現(xiàn)轉(zhuǎn)換器。在例子中,LocaleConverter繼承了ognl.DefaultTypeConverter,重載了其方法原型為“public Object convertValue(Map context, Object value, Class toType)”的方法。函數(shù)的參數(shù): context用于獲取當(dāng)前的ActionContext value需要轉(zhuǎn)換的值 toType需要轉(zhuǎn)換成的目標(biāo)類型 轉(zhuǎn)換器 配置l配置全局的類型轉(zhuǎn)換器:在src文件夾下,新建一個名為“xwork-conversion.pr
7、operties”的配置文件,并在文件中加入“待轉(zhuǎn)換的類型的全名(包括包路徑和類名)=轉(zhuǎn)換器類的全名”對; l應(yīng)用于某個特定類的類型轉(zhuǎn)換器:在該類的包中添加一個格式為“類名-perties”的配置文件,并在文件中加入“待轉(zhuǎn)換的屬性的名字=轉(zhuǎn)換器類的全名”對。上例可這樣配置在源代碼文件夾的tutorial包下新建名為“HelloWperties”文件,并在其中加入“l(fā)oc=tutorial.LocaleConverter”。已有的轉(zhuǎn)換器已有的轉(zhuǎn)換器l預(yù)定義類型,例如int、boolean、double等; l日期類型, 使用當(dāng)前區(qū)
8、域(Locale)的短格式轉(zhuǎn)換,即DateFormat.getInstance(DateFormat.SHORT); l集合(Collection)類型, 將request.getParameterValues(String arg)返回的字符串?dāng)?shù)據(jù)與java.util.Collection轉(zhuǎn)換; l集合(Set)類型, 與List的轉(zhuǎn)換相似,去掉相同的值; l數(shù)組(Array)類型, 將字符串?dāng)?shù)組的每一個元素轉(zhuǎn)換成特定的類型,并組成一個數(shù)組。批量封裝對象(批量封裝對象(BeanBean)public class Product private String name; private dou
9、ble price; private Date dateOfProduction; public String getName() return name;public void setName(String name) = name;public double getPrice() return price;public void setPrice(double price) this.price = price;public Date getDateOfProduction() return dateOfProduction;public void setDateOfP
10、roduction(Date dateOfProduction) this.dateOfProduction = dateOfProduction;ProductConfirm.java package i18n;import java.util.List;import com.opensymphony.xwork2.ActionSupport;public class ProductConfirm extends ActionSupport public List products; public List getProducts() return products; public void
11、 setProducts(List products) ducts = products; Override public String execute() for(Product p : products) System.out.println(p.getName() + | + p.getPrice() + | + p.getDateOfProduction(); return SUCCESS; 在i18n包下:ProductCperties lproducts=i18n.Product struts.xml ShowProduct
12、s.jsp AddProducts.jsp Add ProductProduct NamePriceDate of productionShowProducts.jsp Show ProductsProduct NamePriceDate of production$測試轉(zhuǎn)換錯誤處理轉(zhuǎn)換錯誤處理l在源代碼文件夾下的struts.xml中的ProductConfirm Action中加入以下代碼:AddProducts.jsp在頁面上加上錯誤提示信息 l在AddProducts.jsp的“”后,加入下面代碼可以實現(xiàn): 說明l以上功能是通過Struts 2.0里的一個名為conversionError的攔截器(interceptor)工作,它被注冊到默認(rèn)攔截器棧(default interceptor stack)中。Struts 2.0在轉(zhuǎn)換出錯后,會將錯誤放到ActionContext中,在conver
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河南推拿職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案詳解一套
- 在線體檢預(yù)約服務(wù)合同
- 2026屆江蘇省南京市七校聯(lián)合體高三上學(xué)期12月聯(lián)考地理含答案
- 中醫(yī)康復(fù)治療師崗位招聘考試試卷及答案
- 2025年城管崗面試題目及答案解析
- 辦公室主任2025年工作計劃(3篇)
- 2025年安全生產(chǎn)工作總結(jié)及2026年思路計劃(第3篇)
- 2025年網(wǎng)絡(luò)接口適配器合作協(xié)議書
- 2025年液位雷達(dá)項目建議書
- 2025年Β-羥基烷酸PHAS項目合作計劃書
- 智能采血管理系統(tǒng)功能需求
- 【基于PLC的自動卷纜機(jī)結(jié)構(gòu)控制的系統(tǒng)設(shè)計10000字(論文)】
- 資產(chǎn)移交使用協(xié)議書
- 腦器質(zhì)性精神障礙護(hù)理查房
- GB/T 45481-2025硅橡膠混煉膠醫(yī)療導(dǎo)管用
- GB/T 32468-2025銅鋁復(fù)合板帶箔
- 山西交控集團(tuán)招聘筆試內(nèi)容
- 大窯校本教材合唱的魅力
- 《建筑測繪》課件
- 《健康體檢報告解讀》課件
- 前臺電話禮儀培訓(xùn)
評論
0/150
提交評論