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

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

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

    隨筆 - 170  文章 - 536  trackbacks - 0
    <2006年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    我參與的團隊

    隨筆分類(103)

    搜索

    •  

    積分與排名

    • 積分 - 414231
    • 排名 - 135

    最新評論

    閱讀排行榜

           對于各種不同的Java應用,國際化的問題總會給我們非英文用戶帶來一些麻煩,在JSF中也一樣,在實踐中碰到了一系列不容易解決的問題,最終解決的大部分的問題,也完成了一個可以運行的小項目,我把我的一些經驗拿出來和大家分享一下,希望能讓大家在這些地方少走一些彎路。

             Java中的國際化是由 java.util.Locale 類支持的,中文對應的代碼是“zh”,所以我們要在JSF中使用中文的話,需要在我們的 faces-config.xml 中做一些簡單的配置了,加入對中文的支持,當然如果需要支持更多的語言的話,多加幾個<supported-locale>就可以了。

     

    <faces-config>
        
    <application>
            
    <message-bundle>resource</message-bundle>
            
    <locale-config>
                
    <default-locale>zh</default-locale>
                
    <supported-locale>en</supported-locale>
            
    </locale-config>
        
    </application>
    </faces-config>


     

    這里定義了一個<message-bundle>resource</message-bundle>指的是資源文件所在的位置和文件名,這里我們把資源文件放在source根目錄下名稱為resource.properties,這個是英文的資源文件,另外一個存放中文信息的資源文件名為resource_zh.properties

    接下來,我們可以在這些資源文件中加入我們需要的資源信息。推薦大家一個Eclipse的插件來寫我們的資源文件,這個插件叫做Eclipse ResourceBundle Editor Plugin,我們可以很方便的在里面寫中文信息,它會自動的轉換為UTF-8編碼的信息,大家可以到這個地方去下載這個插件http://resourcebundleeditor.com/ess/rbe/home.do。使用起來很簡單,這里就不再多說了。

    JSP文件中使用這些資源之前,需要加入一下這些東西:

    <%@ page contentType="text/html;charset=utf-8"%>

    HTMLhead中加入:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    下面,我們就可以在我們的頁面中綁定并使用這些資源信息:

    使用之前要加載一下資源文件,使用這個Tag

    <f:loadBundle basename="resource" var="messages"/>

    我在這里給消息起了個別名messages,以后就可以通過這個別名來使用資源文件。

    比如我使用 <h:outputText> 來引用資源信息schedule.label.starttime可以這么用。

    <h:outputText value="#{messages['schedule.label.starttime']}"/>

    是不是可以用了呢?不過別急,用是能用,如果你在 JSF 中使用了 Tiles 的話,就會出現一些問題了,我們如果使用了 <h:inputText> 這樣的輸入框的話,當你輸入中文并提交,你就會發現,你輸入的文字變成這樣的了“\u5DF2\u5B8C\u6210”,曾經為了這個問題,找解決方案花了我三周的時間。首先把問題定位到 Tiles 上,因為如果不使用 Tiles 的話,是沒有這個問題的,但是 Tiles 又不能不用的,最后發現其實很容易的,只要在 <f:view> 中加上 locale=”zh” 就可以了,如果需要的話,可以把這個屬性動態化,滿足國際化的需要,就像這樣<f:view locale="#{userProfile.locale}">

    這樣的話,一切都正常了,使用 Tiles 也沒有問題的。

    今天有朋友問了我關于 JavaScript 中的中文亂碼問題,我在我的JSP中找了一段代碼拿出來看看:

    <h:commandLink id="delete" action=".." onclick="if (!confirm('#{messages['system.msg.confirmdel']}')) return false;">

    這樣的話,里面的中文是可以正常顯示的,下面我給大家一些建議吧,希望對大家有一些幫助。

    1.        所有文字信息全部寫在資源文件中,通過引用其別名來使用這些信息;

    2.        所有的中文要轉換成 UTF-8 編碼,可以使用Eclipse ResourceBundle Editor Plugin來解決;

    3.        頁面編碼方式定義成 UTF-8 ,不要使用其默認值。

    當然,這只是我在使用中積累的一點小小的經驗了,希望能對大家有一點幫助,如果大家發現有什么不正確就請賜教,如果更好的解決方案,也拿出來和大家分享吧,因為我們的分享可能會給大家節省更多的時間。

    posted on 2006-01-20 20:39 steady 閱讀(2206) 評論(1)  編輯  收藏 所屬分類: JSF & Myfaces

    FeedBack:
    # re: JSF的中文化與國際化 2006-01-21 02:34 一滴水
    謝謝,我們項目中也是用jsf,借鑒了:)  回復  更多評論
      
    主站蜘蛛池模板: 美女被免费视频网站a国产| 久久精品无码免费不卡| 亚洲三级在线免费观看| 亚洲综合成人婷婷五月网址| 亚洲中文无码永久免费| 国产精品免费久久久久影院 | 久久亚洲精品成人| 精品无码一区二区三区亚洲桃色| 亚洲国产成人九九综合| 久久久久女教师免费一区| 亚洲男人在线无码视频| 亚洲va成无码人在线观看| 青青青免费国产在线视频小草| 国产男女猛烈无遮挡免费视频网站| 久久久久亚洲爆乳少妇无 | 一个人免费观看视频在线中文| 午夜精品射精入后重之免费观看| 嫩草视频在线免费观看| 亚洲av无码专区在线播放| 国产精品国产亚洲区艳妇糸列短篇| 巨胸喷奶水www永久免费| 无码日韩人妻av一区免费| 亚洲日韩aⅴ在线视频| 国产午夜亚洲精品| 波多野结衣免费视频观看| 亚洲国产中文在线二区三区免| 毛片免费观看网址| 亚洲xxxxxx| 亚洲高清视频一视频二视频三| 99久久国产亚洲综合精品| 亚洲中文字幕伊人久久无码| 亚洲熟女综合一区二区三区 | 亚洲一区二区三区偷拍女厕 | 在线看片无码永久免费aⅴ| 亚洲午夜成激人情在线影院| 免费观看的av毛片的网站| caoporm碰最新免费公开视频| 亚洲精品国产成人99久久| 大地资源在线资源免费观看| 国产成人无码a区在线观看视频免费| h视频在线免费观看|