<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    Struts2教程10:國際化

    本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

    上一篇:Struts2教程9:實現(xiàn)自已的攔截器

    國際化的作用就是根據(jù)不同國家的用戶在訪問Web或其他類型的程序時,將各種信息以本地的常用形式顯示出來,如界面信息在中國,就會顯示中文信息,在以英文為主的國家里,就會顯示英文信息。還有就是一些信息的格式,如日期格式等。

    從屬性文件中獲得字符串信息是國際化的基本應(yīng)用。在Struts2中使用的屬性文件就是Java屬性文件,擴(kuò)展名為properties。在Struts2中的屬性文件可以有很多默認(rèn)的位置,Struts2可按如下的順序(或步驟)來定位屬性文件:

        1. ActionClass.properties
    :屬性文件名和動作類同名。Struts2會首先查詢與當(dāng)前訪問的動作類同名,并且和ActionClass.class在同一個目錄下的屬性文件。

    2. BaseClass.propertiesBaseClass表示動作類的基類。所有動作類都會查找Object.properties文件(因為Object是所有Java類的基類),但要注意的是Object.properties文件可不能放到當(dāng)前動作類的目錄中,由于Objectjava.lang包中,因此,Object.properties要放到jdk包的java"lang目錄中。而對于ActionSupport.properties文件,當(dāng)然也不能放到動作類的當(dāng)前目錄中,由于ActionSupport類中com.opensymphony.xwork2名中,因此,需要將ActionSupport.properties文件放到xwork2.jar包中的com\opensymphony\xwork2目錄中,由于放到jar文件中不太方便,因此,可以使一個和當(dāng)前動作類在一個目錄的類先繼承ActionSupport,然后所有的動作類都繼承于這個類。代碼如下:


    public class MyActionSupport extends ActionSupport
    {
        ... ...
    }
    public class ActionClass extends MyActionSupport
    {
        ... ...
    }

    這樣的話,只要存在一個MyActionSupport.properties,在當(dāng)前目錄下的所有動作類都會讀取這個文件。

    3. Interface.properties:這類文件和BaseClass.properties類似,Interface表示動作類實現(xiàn)的接口。

    4. 如果動作類實現(xiàn)了ModelDriven, 那么重復(fù)第1步。

    5. package.properties:大家要注意。這個文件就叫package.properties。不象InterfaceBaseClass都是泛指。這個文件可以放到當(dāng)前動作類的包的任何一層目錄下。如當(dāng)前動作類在action.test包中。那么package.properties可以放到action目錄中,也可以放到action"test目錄中。Struts2會從離動作類最近的位置開始查找package.properties文件。

    6. 搜索il8n資源信息

    7. 查找全局資源屬性文件

        如下面是一個動作類


    package action.test;

    import org.apache.struts2.*;
    import com.opensymphony.xwork2.ActionSupport;

    public class Internationalizing extends ActionSupport        
    {
        
    public String execute() throws Exception
        {
            
    return "forward";
        }
    }

    action\test目錄下有一個Internationalizing.properties文件,內(nèi)容如下:

    delete = 刪除

    save = 保存

    我們可以在jsp文件中使用如下幾種方法取出資源信息:

    <s:property value="getText('delete')"/>

    <s:text name="save" />

        3. 使用<s:il8n>標(biāo)簽。這個標(biāo)簽可以直接定位屬性文件,如abc.propertiesWEB-INF\classes\test目錄下,內(nèi)容和Internationalizing.properties一樣,則可以使用如下的代碼讀取abc.properties的內(nèi)容:


    <%@ taglib prefix="s" uri="/struts-tags" %>
    <s:i18n name="test.abc">
        <s:text name="save" />
        
    <s:text name="delete" />
    </s:i18n>

    當(dāng)然,我們也可以使用全局的屬性文件,在WEB-INF"classes目錄下建立一個struts.properties文件,內(nèi)容如下:

    struts.custom.i18n.resources=my

    WEB-INF\classes目錄下建立一個my.properties文件,當(dāng)Struts2按著上述的順序沒有找到相應(yīng)的屬性文件時,最后就會考慮尋找全局的屬性文件,因此,就會找到my.properties

       還可以通過屬性文件名來讓Struts2按著客戶端瀏覽器的語言環(huán)境來找符合某種語言的屬性文件。如有三個屬性文件language.propertieslanguage_en.propertieslanguage_zh.properties。如果客戶端的語言是中文,Struts2就會讀language_zh.properties,如果是英文,就會讀language_en.properties。如果這兩個文件的某個不存在,就會讀language.properties。讀者可通過IE的[工具]->[Internet]->[語言]來測試客戶端瀏覽器的語言,如圖1所示:



                                          圖1







    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2008-05-20 16:06 銀河使者 閱讀(9639) 評論(10)  編輯  收藏 所屬分類: Struts2 原創(chuàng)

    評論

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    學(xué)習(xí)學(xué)習(xí)。
    2008-05-20 16:25 | 莫名

    # re: Struts2教程10:國際化[未登錄]  回復(fù)  更多評論   

    那么,這位兄臺,我想請問下如果我用的是extjs+spring+hibernate的架構(gòu),這個還可以生效嗎?
    2008-05-20 21:35 | 小魚

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    to 小魚

    只要你使用了struts2,就可以生效。 處理屬性文件是由jdk完成的,而尋找屬性文件,是由struts2完成的。

    但如果你不用struts2,spring也支持國際化,不防使用spring的國際化功能。
    2008-05-20 22:13 | 銀河使者

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    學(xué)習(xí),不錯啊!加油!!!
    2008-06-09 23:57 | javajavajava

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    銀河使者,沒有了???
    2008-08-20 14:59 | bigheadbird

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    正打算往下寫呢,不過現(xiàn)在正在寫這方面的書,時間有點緊,所以最近沒更新blog。等寫完了,會繼續(xù)深入探討struts 2。
    2008-08-20 15:19 | 銀河使者

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    樓主要出書嗎?要買來看看!
    2008-11-01 17:38 | daoyongyu

    # re: Struts2教程10:國際化[未登錄]  回復(fù)  更多評論   

    沒有了?寫的很好,希望樓主繼續(xù)寫
    2010-07-23 11:23 | 楓葉

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    支持!!
    2011-03-23 10:00 | 廖世勇

    # re: Struts2教程10:國際化  回復(fù)  更多評論   

    真是一個java高手啊,寫的不錯,學(xué)習(xí)了!
    2012-05-29 21:33 | 愛來吧
    主站蜘蛛池模板: 热re99久久6国产精品免费| 亚洲va无码手机在线电影| 99久久久国产精品免费牛牛 | 牛牛在线精品免费视频观看| 亚洲视频一区在线播放| 亚洲国产精品成人精品无码区| 国产大片线上免费看| 91在线品视觉盛宴免费| 日韩av无码久久精品免费| 国产高清对白在线观看免费91| 豆国产96在线|亚洲| 亚洲欧洲精品成人久久曰| 亚洲国产成人综合| 亚洲欧洲国产日韩精品| 亚洲av无码乱码国产精品| 中文字幕无码精品亚洲资源网| 国产v片免费播放| 国产美女无遮挡免费视频| 成年女人毛片免费观看97| 18国产精品白浆在线观看免费| 三年片在线观看免费观看大全动漫| 久久免费香蕉视频| a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 亚洲欧洲日韩在线电影| 99人中文字幕亚洲区| 亚洲视频一区网站| 亚洲欧洲日产国码二区首页| 亚洲日产2021三区在线| 亚洲综合久久1区2区3区| 亚洲免费在线播放| 亚洲视频日韩视频| 亚洲欧洲日韩综合| 亚洲毛片基地4455ww| 亚洲 日韩 色 图网站| 亚洲日韩精品无码专区加勒比☆| 亚洲av一本岛在线播放 | 韩国欧洲一级毛片免费| 全免费a级毛片免费看不卡| 午夜私人影院免费体验区| 四虎影视在线永久免费看黄| 免费a级毛片大学生免费观看|