版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
怎么讀取struts2.0的資源文件說起這個真是夠折磨人的,現(xiàn)在要開始做工程,決定使用struts2.0做,可是大局部都是自己遇習(xí)的,沒方法就遇到了這個問題,經(jīng)過本人長期的工作和不停的查看資料,終于攻克了這個難題,現(xiàn)在寫在這里已供有同樣問題的大家共享.一,在Eclipse創(chuàng)立工程配置開發(fā)和運行環(huán)境要想讀取資源文件必須要下載一個插件,這個插件的名字叫做:plugin,大家不用擔憂是可以通過Eclipse自己升級和下載的一個插件,所以不需要從網(wǎng)上下載.下面我把怎么配置這個插件的步驟告訴大家.1、展開Eclipse的Help菜單,將鼠標移到SoftwareUpdate子項,在出現(xiàn)的子菜單中點擊FindandInstall;2、在Install/Update對話框中選擇Searchfornewfeaturestoinstall,點擊Next;3、在Install對話框中點擊NewRemoteSite;4、在NewUpdateSite對話框的Name填入“PropEdit〞或其它任意非空字符串,在URL中填入://propedit.sourceforge.jp/eclipse/updates/;5、在Sitetoincludetosearch列表中,除上一步參加的site外的其它選項去掉,點擊Finsih;6、在彈出的Updates對話框中的Selectthefeaturestoinstall列表中將所有結(jié)尾為“3.1.x〞的選項去掉〔適用于Eclipse3.2版本的朋友〕;7、點擊Finish關(guān)閉對話框;8、在下載后,同意安裝,再按提示重啟Eclipse,在工具條看到形似vi的按鈕表示安裝成功,插件可用。此時,Eclpise中所有properties文件的文件名前有綠色的P的圖標作為標識。二,開始配置資源文件:
相信通過步驟一之后,你的Eclipse已經(jīng)能夠使用擴展名為.properties的資源文件了,那怎么使用資源文件呢.1.新建一個為名為perties的資源文件,那么這個時候就出現(xiàn)了分類:(1),如果向其中寫入struts.custom.i18n.resources=globalMessages,那么同樣建立在src目錄下的globalMperties或者globalMessages_zh_CN.properties,就成為全局資源文件,一般來說,全局文件一般放在src文件夾下。
(2)相反的來說,如果向perties中寫入struts.custom.i18n.resources=com.sanss.globalMessages的話,說明說明資源文件globalMessages位于com.sansspackage下面,又可定義RingMperties放到與class相同的目錄。還可以將資源文件命名成perties,這樣就可以寫入到具體的包下面.
2.讀取資源文件
假設(shè)說剛剛我們像struts2.0中寫如的是全局的資源文件,那么現(xiàn)在我們建立一個名為:globalMessages_zh_CN.properties的資源文件,文件中可以直接寫如建和值的對等關(guān)系,如:invalid.ringName=請輸入鈴音名text.createRing=創(chuàng)立鈴音format.date=格式化日期都是可以的.
3,根據(jù)不同的需要在不同的地方讀取資源文件的方式:(1)在JSP界面上讀取:在界面上讀取是比擬簡單的,我們有三種方式可以讀取:<1>使用2.0標簽//name="建的名字"
<2>2.getText方式
<h2><s:propertyvalue="%{getText('text.createRing')}"/></<SPAN>h2>在JSP上面可以直接讀到<s:property
value="getText('text.createRing')"/>
<3>3.被validator的配置文件引用key。例如在RingManage-validation.xml中的
<message
key="invalid.ringName"></<SPAN>message>如果在name中以%{...}包裹一個名字,那么會先在value-stack中進行ongl轉(zhuǎn)換,然后再去資源文件中獲取文本。
(2)在普通的JAVA類和Action中讀取資源文件:<1>讓你的JAVA類或者是ACTION繼承ActionSupport,通過里面的getText("建名")來取值,可能有一些朋友這么做了,可是偏騙就是從全局資源文件中取不到值,一開始我也是這樣,后來找到了解決的方法,我想可能是在2.0中普通的java類和ACTION根本就沒有方法讀取到全局的資源文件中的值.后來我看到了下面的那些話后決定使用局部的資源文件.假設(shè)我們在某個ChildAction中調(diào)用了getText("user.title"),Struts2.0的將會執(zhí)行以下的操作:查找ChildAction_xx_XX.properties文件或ChildAperties;查找ChildAction實現(xiàn)的接口,查找與接口同名的資源文件MyIperties;查找ChildAction的父類ParentAction的properties文件,文件名為ParentAperties;判斷當前ChildAction是否實現(xiàn)接口ModelDriven。如果是,調(diào)用getModel()獲得對象,查找與其同名的資源文件;查找當前包下的perties文件;查找當前包的父包,直到最頂層包;在值?!睼alueStack〕中,查找名為user的屬性,轉(zhuǎn)到user類型同名的資源文件,查找鍵為title的資源;查找在perties配置的默認的資源文件,參考例1;輸出user.title。所以后來我看到這些之后明白,當在一個JAVA類或者是ACTION里面使用getText的時候它會首先去找到與ACTION或者是與JAVA類同名的資源文件,所以我在同一包下面建立了相同名稱的資源文件.后來經(jīng)過getText的測試通過了.截止到現(xiàn)在,struts2.0的資源文件的讀取,終于成功了.回頭想想可真不容易啊,從8點開始琢磨,一直琢磨到下一點多,真是得來不易,從這次的事件中,我明白了,人一定要有耐心,和恒心還有堅決不移的決心,只有這樣,我們才能在IT界中打出一塊屬于我們自己的領(lǐng)地.太晚了,明天還有正課.得趕緊睡覺了,明天是hibernate框架.參考================================================================================================在Struts2.0中國際化您的應(yīng)用程來自:
:///max/archive/2006/11/01/78536.html
國際化是商業(yè)系統(tǒng)中不可或缺的一局部,所以無論您學(xué)習(xí)的是什么Web框架,它都是必須掌握的技能。
其實,Struts1.x在此局部已經(jīng)做得相當不錯了。它極大地簡化了我們程序員在做國際化時所需的工作,例如,如果您要輸出一條國際化的信息,只需在代碼包中參加FILE-NAME_xx_XX.properties〔其中FILE-NAME為默認資源文件的文件名〕,然后在struts-config.xml中指明其路徑,再在頁面用<bean:message>標志輸出即可。
不過,所謂“沒有最好,只有更好〞。Struts2.0并沒有在這局部止步,而是在原有的簡單易用的根底上,將其做得更靈活、更強大。國際化HelloWorld
下面讓我們看一個例子——HelloWorld。這個例子演示如何根據(jù)用戶瀏覽器的設(shè)置輸出相應(yīng)的HelloWorld。在Eclipse創(chuàng)立工程配置開發(fā)和運行環(huán)境〔如果對這個步驟有問題,可以參考我早前的文章《為Struts2.0做好準備》〕。在src文件夾中參加perties文件,內(nèi)容如下:struts.custom.i18n.resources=globalMessagesStruts2.0有兩個配置文件,struts.xml和perties都是放在WEB-INF/classes/下。struts.xml用于應(yīng)用程序相關(guān)的配置perties用于Struts2.0的運行時〔Runtime〕的配置在src文件夾中參加globalMessages_en_US.properties文件,內(nèi)容如下:HelloWorld=HelloWorld!在src文件夾中參加globalMessages_zh_CN.properties文件,內(nèi)容如下:HelloWorld=你好,世界!在此想和大家分享一個不錯的編寫properties文件的Eclipse插件〔plugin〕,有了它我們在編輯一些簡體中文、繁體中文等Unicode文本時,就不必再使用native2ascii編碼了。您可以通過Eclipse中的軟件升級〔SoftwareUpdate〕安裝此插件,步驟如下:1、展開Eclipse的Help菜單,將鼠標移到SoftwareUpdate子項,在出現(xiàn)的子菜單中點擊FindandInstall;
2、在Install/Update對話框中選擇Searchfornewfeaturestoinstall,點擊Next;
3、在Install對話框中點擊NewRemoteSite;
4、在NewUpdateSite對話框的Name填入“PropEdit〞或其它任意非空字符串,在URL中填入://propedit.sourceforge.jp/eclipse/updates/;
5、在Sitetoincludetosearch列表中,除上一步參加的site外的其它選項去掉,點擊Finsih;
6、在彈出的Updates對話框中的Selectthefeaturestoinstall列表中將所有結(jié)尾為“〞的選項去掉〔適用于Eclipse3.2版本的朋友〕;
7、點擊Finish關(guān)閉對話框;
8、在下載后,同意安裝,再按提示重啟Eclipse,在工具條看到形似vi的按鈕表示安裝成功,插件可用。此時,Eclpise中所有properties文件的文件名前有綠色的P的圖標作為標識。在WebContent文件夾下參加HelloWorl.jsp文件,內(nèi)容如下:<%@page
contentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>HelloWorld</title></head><body><h2><s:textname="HelloWorld"/></h2><h2><s:propertyvalue="%{getText('HelloWorld')}"/></h2></body></html>發(fā)布運行應(yīng)用程序,在瀏覽器地址欄中輸入://localhost:8080/Struts2_i18n/HelloWorld.jsp,出現(xiàn)圖1所示頁面。
圖1中文輸出將瀏覽器的默認語言改為“英語〔美國〕〞,刷新頁面,出現(xiàn)圖2所示頁面。
圖2英文輸出上面的例子的做法,與Struts1.x的做法相似,似乎并不能表達Struts2.0的優(yōu)勢。不過,我在上面的例子用了兩種方法來顯示國際化字符串,其輸出是相同的。其實,這就是Struts2.0的一個優(yōu)勢,因為它默認支持EL,所示我們可以用getText方法來簡潔地取得國際化字符串。另外更普遍的情況——在使用UI表單標志時,getText可以用來設(shè)置label屬性,例如:<s:textfieldname="name"label="%{getText('UserName')}"/>資源文件查找順序之所以說Struts2.0的國際化更靈活是因為它可以能根據(jù)不同需要配置和獲取資源〔properties〕文件。在Struts2.0中有下面幾種方法:使用全局的資源文件,方法如上例所示。這適用于遍布于整個應(yīng)用程序的國際化字符串,它們在不同的包〔package〕中被引用,如一些比擬共用的出錯提示;使用包范圍內(nèi)的資源文件。做法是在包的根目錄下新建名的perties和package_xx_XX.properties文件。這就適用于在包中不同類訪問的資源;使用Action范圍的資源文件。做法為Action的包下新建文件名〔除文件擴展名外〕與Action類名同樣的資源文件。它只能在該Action中訪問。如此一來,我們就可以在不同的Action里使用相同的properties名表示不同的值。例如,在ActonOne中title為“動作一〞,而同樣用title在ActionTwo表示“動作二〞,節(jié)省一些命名工夫;使用<s:i18n>標志訪問特定路徑的properties文件。使用方法請參考我早前的文章《常用的Struts2.0的標志〔Tag〕介紹》。在您使用這一方法時,請注意<s:i18n>標志的范圍。在<s:i18nname="xxxxx">到</s:i18n>之間,所有的國際化字符串都會在名為xxxxx資源文件查找,如果找不到,Struts2.0就會輸出默認值〔國際化字符串的名字〕。上面我列舉了四種配置和訪問資源的方法,它們的范圍分別是從大到小,而Struts2.0在查找國際化字符串所遵循的是特定的順序,如圖3所示:圖3資源文件查找順序圖假設(shè)我們在某個ChildAction中調(diào)用了getText("user.title"),Struts2.0的將會執(zhí)行以下的操作:查找ChildAction_xx_XX.properties文件或ChildAperties;查找ChildAction實現(xiàn)的接口,查找與接口同名的資源文件MyIperties;查找ChildAction的父類ParentAction的properties文件,文件名為ParentAperties;判斷當前ChildAction是否實現(xiàn)接口ModelDriven。如果是,調(diào)用getModel()獲得對象,查找與其同名的資源文件;查找當前包下的perties文件;查找當前包的父包,直到最頂層包;在值?!睼alueStack〕中,查找名為user的屬性,轉(zhuǎn)到user類型同名的資源文件,查找鍵為title的資源;查找在perties配置的默認的資源文件,參考例1;輸出user.title。參數(shù)化國際化字符串許多情況下,我們都需要在動行時〔runtime〕為國際化字符插入一些參數(shù),例如在輸入驗證提示信息的時候。在Struts2.0中,我們通過以下兩種方法做到這點:在資源文件的國際化字符串中使用OGNL,格式為,例如:validation.require=${getText(fileName)}isrequired使用中的字符串格式,格式為{參數(shù)序號〔從0開始〕,格式類形〔number|date|time|choice〕,格式樣式},例如:validation.between=Datemustbetween{0,date,short}and{1,date,short}在顯示這些國際化字符時,同樣有兩種方法設(shè)置參數(shù)的值:使用標志的value0、value1...valueN的屬性,如:<s:textname="validation.required"value0="UserName"/>使用param子元素,這些param將按先后順序,代入到國際化字符串的參數(shù)中,例如:<s:textname="validation.required"><s:paramvalue="UserName"/></s:text>讓用戶方便地選擇語言開發(fā)國際化的應(yīng)用程序時,有一個功能是必不可少的——讓用戶快捷地選擇或切換語言。在Struts2.0中,通過ActionContext.getContext().setLocale(Localearg)可以設(shè)置用戶的默認語言。不過,由于這是一個比擬普遍的應(yīng)用場景〔Scenario〕,所以Struts2.0為您提供了一個名i18n的攔截器〔Interceptor〕,并在默認情況下將其注冊到攔截器鏈〔Interceptorchain〕中。它的原理為在執(zhí)行Action方法前,i18n攔截器查找請求中的一個名為"request_locale"的參數(shù)。如果其存在,攔截器就將其作為參數(shù)實例化Locale對象,并將其設(shè)為用戶默認的區(qū)域〔Locale〕,最后,將此Locale對象保存在session的名為“WW_TRANS_I18N_LOCALE〞的屬性中。下面,我將提供一完整例如演示它的使用方法。packagetutorial;
importjava.util.Hashtable;
importjava.util.Locale;
importjava.util.Map;
publicclassLocales{
publicMap<String,Locale>getLocales(){
Map<String,Locale>locales=newHashtable<String,Locale>(2);
locales.put("AmericanEnglish",Locale.US);
locales.put("SimplifiedChinese",Locale.CHINA);
returnlocales;
}
}tutorial/Locales.java<%@taglibprefix="s"uri="/struts-tags"%><scripttype="text/javascript">
<!--
functionlangSelecter_onChanged(){
document.langForm.submit();
}
//-->
</script><s:setname="SESSION_LOCALE"value="#session['WW_TRANS_I18N_LOCALE']"/><s:beanid="locales"name="tutorial.Locales"/><formaction="<s:urlincludeParams="get"encode="true"/>"name="langForm"
style="background-color:powderblue;padding-top:4px;padding-bottom:4px;">
Language:<s:selectlabel="Language"
list="#locales.locales"listKey="value"
listValue="key"
value="#SESSION_LOCALE==null?locale:#SESSION_LOCALE"
name="request_locale"id="langSelecter"
onchange="langSelecter_onChanged()"theme="simple"/></form>LangSelector.jsp上述代碼的原理為,LangSelector.jsp先實例化一個Locales對象,并把對象的Map類型的屬性locales賦予下拉列表〔select〕。如此一來,下拉列表就獲得可用語言的列表。大家看到LangSelector有<s:form>標志和一段Javascript腳本,它們的作用就是在用戶在下拉列表中選擇了后,提交包含“reqeust_locale〞變量的表單到Action。在翻開頁面時
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度房地產(chǎn)項目擔保合同標準范本3篇
- 2024年度企業(yè)專項人力資源派遣服務(wù)合同3篇
- 2024中介服務(wù)專業(yè)版二手房買賣合同范本3篇
- 2024年房產(chǎn)居中代理協(xié)議
- 2024年度消防設(shè)施安裝調(diào)試合同范本492323篇
- 2024年度供應(yīng)鏈金融擔保履約保證協(xié)議3篇
- 2024年度企業(yè)擔保合同變更及轉(zhuǎn)讓操作規(guī)范3篇
- 2024年度綠色建材認證地板磚批發(fā)合同范本3篇
- 2024年電子商務(wù)師專業(yè)實務(wù)及理論知識考試題庫與答案
- 進口稻草出售合同范例
- 上海市住院醫(yī)師規(guī)范化培訓(xùn)公共科目考試題庫-重點傳染病防治知識
- 專題10閱讀理解、拓展探究-2022-2023學(xué)年八年級數(shù)學(xué)上冊期末選填解答壓軸題必刷專題訓(xùn)練(華師大版)(原卷版+解析)
- 西師大版五年級上冊小數(shù)混合運算題100道及答案
- 2022年7月國家開放大學(xué)本科《中國法律史》期末紙質(zhì)考試試題及答案
- 2024-2025學(xué)年七年級數(shù)學(xué)上冊第一學(xué)期 期末模擬測試卷(湘教版)
- 2024年部門年終工作總結(jié)參考(四篇)
- 二年級數(shù)學(xué)上冊口算天天練
- 肯耐珂薩題庫
- 德詢歐陽開貴 -組織的發(fā)展與挑戰(zhàn)
- 冷凝集素綜合征治療與護理研究進展
- CJT313-2009 生活垃圾采樣和分析方法
評論
0/150
提交評論