國際化的作用就是根據不同國家的用戶在訪問Web或其他類型的程序時將各種信息以本地的常用形式顯示出來如界面信息在中國就會顯示中文信息在以英文為主的國家裡就會顯示英文信息還有就是一些信息的格式如日期格式等
從屬性文件中獲得字符串信息是國際化的基本應用在Struts中使用的屬性文件就是Java屬性文件擴展名為properties在Struts中的屬性文件可以有很多默認的位置Struts可按如下的順序(或步驟)來定位屬性文件
ActionClassproperties屬性文件名和動作類同名Struts會首先查詢與當前訪問的動作類同名並且和ActionClassclass在同一個目錄下的屬性文件
BaseClasspropertiesBaseClass表示動作類的基類所有動作類都會查找Objectproperties文件(因為Object是所有Java類的基類)但要注意的是Objectproperties文件可不能放到當前動作類的目錄中由於Object在javalang包中因此Objectproperties要放到jdk包的javalang目錄中而對於ActionSupportproperties文件當然也不能放到動作類的當前目錄中由於ActionSupport類中comopensymphonyxwork名中因此需要將ActionSupportproperties文件放到xworkjar包中的comopensymphonyxwork目錄中由於放到jar文件中不太方便因此可以使一個和當前動作類在一個目錄的類先繼承ActionSupport然後所有的動作類都繼承於這個類代碼如下
publicclassMyActionSupportextendsActionSupport
{
}
publicclassActionClassextendsMyActionSupport
{
}
這樣的話只要存在一個MyActionSupportproperties在當前目錄下的所有動作類都會讀取這個文件
Interfaceproperties這類文件和BaseClassproperties類似Interface表示動作類實現的接口
如果動作類實現了ModelDriven 那麼重復第步
packageproperties大家要注意這個文件就叫packageproperties不象Interface和BaseClass都是泛指這個文件可以放到當前動作類的包的任何一層目錄下如當前動作類在actiontest包中那麼packageproperties可以放到action目錄中也可以放到actiontest目錄中Struts會從離動作類最近的位置開始查找packageproperties文件
搜索iln資源信息
查找全局資源屬性文件
如下面是一個動作類
packageactiontest;
importorgapachestruts*;
importcomopensymphonyxworkActionSupport;
publicclassInternationalizingextendsActionSupport
{
publicStringexecute()throwsException
{
returnforward;
}
}
在actiontest目錄下有一個Internationalizingproperties文件內容如下
delete = 刪除
save = 保存
我們可以在jsp文件中使用如下幾種方法取出資源信息
<s:propertyvalue=getText(delete)/>
<s:text name=save />
使用<s:iln>標簽這個標簽可以直接定位屬性文件如abcproperties在WEBINFclassestest目錄下內容和Internationalizingproperties一樣則可以使用如下的代碼讀取abcproperties的內容
<%@taglibprefix=suri=/strutstags%>
<s:inname=testabc>
<s:textname=save/>
<s:textname=delete/>
</s:in>
當然我們也可以使用全局的屬性文件在WEBINFclasses目錄下建立一個strutsproperties文件內容如下
strutscustominresources=my
在WEBINFclasses目錄下建立一個myproperties文件當Struts按著上述的順序沒有找到相應的屬性文件時最後就會考慮尋找全局的屬性文件因此就會找到myproperties
還可以通過屬性文件名來讓Struts按著客戶端浏覽器的語言環境來找符合某種語言的屬性文件如有三個屬性文件languagepropertieslanguage_enpropertieslanguage_zhproperties如果客戶端的語言是中文Struts就會讀language_zhproperties如果是英文就會讀language_enproperties如果這兩個文件的某個不存在就會讀languageproperties讀者可通過IE的[工具]>[Internet]>[語言]來測試客戶端浏覽器的語言如圖所示
圖
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27931.html