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

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

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

    即興的靈感

    思維是一種藝術(shù); 藝術(shù)需要靈感。

    博客好友

    最新評論

    Spring筆記之八(Internationalization of spring)

    ??? 國際化支持在實際開發(fā)中可能是最常用的特性,本文分析Spring的 ApplicationContext 提供國際化支持, 其提供了更加強大的功能,如信息的自動裝配以及熱部署功能(配置文件修改后自動讀取,而無需重新啟動應(yīng)用程序)。
    ??? 目前Spring中提供了兩個 MessageSource接口的實現(xiàn),即ResourceBundleMessageSourceReloadableResourceBundleMessageSource,后者提供了無需重啟即可重新加載配置信息的特性。

    ???
    ??? 在下面的配置文件中,通過MessageResource的一個實現(xiàn)類org.springframework.context.support.ResourceBundleMessageSource來獲得國際化的信息。
    ?1?<beans>
    ?2?<description>Spring?Quick?Start</description>
    ?3?<bean?id="messageSource"
    ???? class
    ="org.springframework.context.support.ResourceBundleMessageSource" >
    ?4?<property?name="basenames">
    ?5?<list>
    ?6?<value>messages</value>
    ?7?</list>
    ?8?</property>
    ?9?</bean>
    10?</beans>
    11?

    這里聲明了一個名為 messageSource Bean 注意: 對于Message定義,Bean ID必須為messageSource,這是目前Spring的編碼規(guī)約),對應(yīng)類為ResourceBundleMessageSource

    而其中的basename屬性用來設(shè)定資源信息文件的前置文件名稱,在本例中為messagesSpring會自動在CLASSPATH根路徑中按照如下順序搜尋資源信息文件并進(jìn)行加載(以Localezh_CN為例,其實Spring在實際上調(diào)用了JDKResourceBundle讀取配置文件) :

    messages_zh_CN.properties

    messages_zh.properties

    messages.properties

    messages_zh_CN.class <!--[endif]-->

    messages_zh.class

    messages.class

    <!--[if !supportLists]--> 資源配置信息文件中的內(nèi)容

    1? messages_zh_CN.properties:
    2?userinfo=當(dāng)前登錄用戶:?[{0}]?登錄時間:[{1}]

    3? messages_en_US.properties:
    4?userinfo=Current?Login?user:?[{0}]?Login?time:[{1}]

    5?

    ??測試代碼:
    1?ApplicationContext?ctx =
    ???????????????
    new ?FileSystemXmlApplicationContext( " bean.xml "
    );
    2?Object[]?arg?=?new
    ?Object[]
    3?{?"Erica"
    ,?Calendar.getInstance().getTime()
    4?
    };
    5?//以系統(tǒng)默認(rèn)Locale加載信息(對于中文WinXP而言,默認(rèn)為zh_CN)

    6?String?msg?=?ctx.getMessage("userinfo" ,?arg);
    7?System.out.println("Message?is?===>?"+
    msg);
    8?

    代碼中,我們將一個Object數(shù)組arg作為參數(shù)傳遞給ApplicationContext.getMessage方法,這個參數(shù)中包含了出現(xiàn)在最終文字信息中的可變內(nèi)容,ApplicationContext? 將根據(jù)參數(shù)中的Locale信息對其進(jìn)行處理(如針對不同?? Locale設(shè)定日期輸出格式),并用其替換配置文件中的{n}標(biāo)識(n代表參數(shù)數(shù)組中的索引,從1? 開始)。

    運行上面的代碼,得到以下輸出的內(nèi)容:
    ?? Message is ===> |
    ì〃¤?°|ì???¨???: [Erica] |ì???¨o〃¤??:[07-9-27 上午1:27]

    針對ResourceBundle的編碼過程中發(fā)生的問題。這是由于轉(zhuǎn)碼過程中產(chǎn)生的編碼問題引發(fā)的。比較簡單的解決辦法是通過JDK提供的轉(zhuǎn)碼工具native2ascii.exe? 進(jìn)行轉(zhuǎn)換。執(zhí)行:native2ascii messages_zh_CN.properties msg.txt。 再用msg.txt文件替換Messages_zh_CN.properties?????? 文件。

    ?? 再次運行示例代碼,得到正確輸出:

    ?? Message is ===> 當(dāng)前登錄用戶: [Erica] 登錄時間:[07-9-27 上午1:30]

    嘗試在代碼中指定不同的Locale參數(shù):

    String msg = ctx.getMessage("userinfo", arg, Locale.US);再次運行,可以看到:

    Message is ===> Current Login user: [Erica] Login time::[9/27/07 1:35AM]

    可見,前者根據(jù)當(dāng)前默認(rèn)Locale"zh_CN"getMessage方法自動加載了messages_zh_CN.properties文件;后者 getMessage 方法根據(jù)指定編碼"en_US"加載了messages_en_US.properties文件。






    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調(diào)華麗/簡單生活/完美人生

    posted on 2007-09-27 01:00 poetguo 閱讀(1427) 評論(1)  編輯  收藏 所屬分類: Spring

    評論

    # re: Spring筆記之八(Internationalization of spring) 2007-09-27 10:46 千里冰封

    支持一下學(xué)習(xí)SPRING的  回復(fù)  更多評論   

    主站蜘蛛池模板: 100部毛片免费全部播放完整| 97无码免费人妻超级碰碰夜夜| 亚洲视频一区网站| 最近中文字幕无吗高清免费视频| 爱情岛亚洲论坛在线观看 | 免费毛片在线视频| 国产无遮挡又黄又爽免费网站| 91亚洲自偷手机在线观看| 免费观看的毛片手机视频| 国产在线观a免费观看| 77777亚洲午夜久久多喷| 久久久久亚洲爆乳少妇无 | 国产亚洲福利精品一区| 成人毛片免费观看| 全黄大全大色全免费大片| 456亚洲人成影院在线观| 亚洲精品乱码久久久久久按摩| 成人毛片免费观看| 久久久久高潮毛片免费全部播放| 亚洲AV无码一区二区一二区| 国产亚洲美女精品久久久久狼 | 永久免费毛片手机版在线看| 18禁超污无遮挡无码免费网站| 亚洲国产精品免费观看 | 亚洲第一福利网站在线观看| 99爱在线精品视频免费观看9 | 91精品国产免费久久国语麻豆| 国产av无码专区亚洲av毛片搜| 亚洲AV日韩AV永久无码绿巨人 | 亚洲黄黄黄网站在线观看| 最近最新MV在线观看免费高清 | 四虎影在线永久免费观看| 最近中文字幕免费mv在线视频| 一级女人18片毛片免费视频| 亚洲精品美女久久7777777| 亚洲激情在线视频| 国产亚洲精品影视在线产品| 破了亲妺妺的处免费视频国产| 91九色老熟女免费资源站| 色播在线永久免费视频网站| 美景之屋4在线未删减免费|