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

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

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

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

    Struts2教程10:國際化

    本文為原創,如需轉載,請注明作者和出處,謝謝!

    上一篇:Struts2教程9:實現自已的攔截器

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

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

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

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


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

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

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

    4. 如果動作類實現了ModelDriven, 那么重復第1步。

    5. package.properties:大家要注意。這個文件就叫package.properties。不象InterfaceBaseClass都是泛指。這個文件可以放到當前動作類的包的任何一層目錄下。如當前動作類在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文件,內容如下:

    delete = 刪除

    save = 保存

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

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

    <s:text name="save" />

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


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

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

    struts.custom.i18n.resources=my

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

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



                                          圖1







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

    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 銀河使者 閱讀(9638) 評論(10)  編輯  收藏 所屬分類: Struts2 原創

    評論

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

    學習學習。
    2008-05-20 16:25 | 莫名

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

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

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

    to 小魚

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

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

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

    學習,不錯啊!加油!!!
    2008-06-09 23:57 | javajavajava

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

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

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

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

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

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

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

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

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

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

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

    真是一個java高手啊,寫的不錯,學習了!
    2012-05-29 21:33 | 愛來吧
    主站蜘蛛池模板: 亚洲影视一区二区| 国产V亚洲V天堂A无码| 亚洲码一区二区三区| 久久免费视频网站| 亚洲av无码片在线播放| 成人爽a毛片免费| 亚洲国产综合91精品麻豆| 最近免费中文字幕中文高清| 亚洲精品成人网站在线观看 | 最近中文字幕无免费| 亚洲AV无码国产在丝袜线观看| 国产偷伦视频免费观看| 亚洲伦理一区二区| 精品免费久久久久久久| 亚洲一区二区三区无码国产| 在线免费观看一级毛片| 国产青草亚洲香蕉精品久久| 精品国产人成亚洲区| 日韩免费电影网站| 久久精品国产亚洲av麻豆图片| 好男人视频在线观看免费看片| 黄页网站在线免费观看| 亚洲日韩精品一区二区三区| 99久久免费看国产精品| 亚洲色成人四虎在线观看| 免费人成视频在线观看视频| 中国一级特黄的片子免费 | 日韩免费一级毛片| 永久免费观看黄网站| 亚洲韩国—中文字幕| 亚洲免费福利在线视频| 国产亚洲精品91| 亚洲AV无码一区二区三区DV | 亚洲人成影院在线| 免费a级毛片无码a∨蜜芽试看| 国产亚洲漂亮白嫩美女在线| 久热综合在线亚洲精品| 日韩一品在线播放视频一品免费| 精品久久久久久国产免费了| 亚洲国产午夜电影在线入口| 免费人成网站在线高清|