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

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

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

    WebWork2.2新特性(四):使用國際化攔截器


    其實這個I18nInterceptor很簡單,而且實際應用中根據實際需求需要進行變通,所以這個I18nInterceptor并不是很實用,當然還是提供了一定的參考作用的.

    首先我們來看一下如何使用這個攔截器.

    首先我們需要有一個Action,為了演示,其實最簡單的Action就可以,例如

    public class I18nIcAction extends ActionSupport

    public String execute()
    {
    return SUCCESS;
    }

    展示的頁面例子如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib uri="webwork" prefix="ww" %>
    <html>
    <head>
    <title>Test I18n Interceptor</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    </head>

    <body>
    Choose: <a href="?locale=en">English Page</a> ,
    <a href="?locale=zh_CN">Chinese Page</a>
    <br><br>
    Content:<ww:text name="desc"/>
    </body>
    </html> 


    其中我們使用"locale"作為locale的參數名,頁面里面有2個選項:英文和中文.

    對應的資源文件有2個(或者3個,如果包括缺省一個的話):

    英文的I18nIcAction_en.properties內容為:
    desc=english

    中文的I18nIcAction_zh_CN.properties內容為:
    desc=\u7b80\u4f53\u4e2d\u6587

    接下來我們在xwork.xml里面定義我們的action和攔截器:

    <package name="i18nic" extends="webwork-default" namespace="/i18nic">
    <interceptors>
    <interceptor name="i18n" class="com.opensymphony.xwork.interceptor.I18nInterceptor">
    <param name="parameterName">locale</param>
    <param name="attributeName">ww_locale</param>
    </interceptor>

    <interceptor-stack name="i18nStack">
    <interceptor-ref name="i18n"/>
    <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
    </interceptors>

    <default-interceptor-ref name="i18nStack"/>

    <action name="index" class="com.jscud.ww2test.i18nic.I18nIcAction">
    <result name="success" type="dispatcher">
    <param name="location">/i18nic/index.jsp</param>
    </result>
    </action>
    </package> 

    所有的工作都好了,發布并運行訪問 /i18nic/index.action,一切和預想的一樣.


    通過查看I18nInterceptor的源碼,我們可以看到這個攔截器的工作原理是這樣的:

    1. 如果參數中指定了locale,那么攔截器分析參數,并把locale保存到session中.
    2. 在后面的action中,攔截器從session中獲取這個locale,并設置action的locale,從而保持用戶的設置.
    3. 在后續頁面還可以繼續切換locale.

    從源碼分析結果來看,這樣做也會有一些實際的問題:

    • session過期后,用戶不知道發生了什么,系統使用缺省的locale.
    • 只能影響通過action操作的頁面

    在實際使用中,我們也要考慮如何解決后面2個問題,例如通過cookie,或者把用戶的配置保存在數據庫里等,這些實現就要結合實際代碼進行實現了,完全可以不需要這個I18nInterceptor就可以實現,當然也很簡單.

    各取所需,看自己的實際需要吧 :)


    除經特別注明外,本文章版權歸JScud Develop團隊或其原作者所有.
    轉載請注明作者和來源. scud(飛云小俠) 歡迎訪問 JScud Develop

     

    posted on 2005-08-31 15:46 Scud(飛云小俠) 閱讀(3303) 評論(10)  編輯  收藏 所屬分類: WEB

    評論

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-08-31 16:07 dudu

    你的幾篇文章都影響了首頁的顯示, 請調整好格式再發布。  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-08-31 16:31 scud

    ... 可是我編輯的時候已經我瀏覽的時候都是對的,就是blogjava首頁不對...看源碼也看不出原因啊  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-08-31 20:32 dudu

    現在好了。  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-11-16 11:41 Sue

    hi,我根據你說的方法做了,可是,有這樣的錯誤信息:
    嚴重: Could not execute action
    java.lang.IllegalStateException: Cannot find message associated with key parameterMap.locked
    at org.apache.catalina.util.ParameterMap.remove(ParameterMap.java:204)
    at com.bcbs.ecbp.util.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:62)

    錯誤在代碼行:
    Object requested_locale = params.remove(parameterName);
    parameterName打印出來的值是:locale  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-11-16 12:02 scud(飛云小俠)

    com.bcbs.ecbp.util.interceptor.I18nInterceptor 是什么??

    文章里沒有用這個啊  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-11-16 13:52 Sue

    我用的是ww2.1.7,所以就從ww2.2 copy出來放到com.bcbs.ecbp.util.interceptor.I18nInterceptor的...  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-11-16 15:10 scud(飛云小俠)

    看看這個吧
    http://wiki.opensymphony.com/pages/viewpage.action?pageId=10

    我沒有在2.1.7下用過這個攔截器

    或者是其他地方你寫錯了什么...這個我無從猜測..

      回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2005-11-18 17:02 sue

    好的。謝謝你了。  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2006-02-04 07:53 fdg

    按照你的文章做,可是沒有成功,這么簡單的搞這么久都沒成功,有些失去信心。
    能不能把例子做成附件,提供下載  回復  更多評論   

    # re: WebWork2.2新特性(四):使用國際化攔截器 2006-02-04 08:06 fdg

    你的這個例子要用那些jar呀?
    我把webwork2.2中starter(可以運行)中的包全部拷過來,tomcat日記提示:
    嚴重: Error listenerStart
    2006-2-4 7:55:22 org.apache.catalina.core.StandardContext start
    嚴重: Context [/i18nic] startup failed due to previous errors  回復  更多評論   

    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    公告

    文章發布許可
    創造共用協議:署名,非商業,保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲免费在线观看视频| 成人免费网站视频www| 久久乐国产综合亚洲精品| 欧洲亚洲综合一区二区三区| 两个人看的www免费视频中文| 18禁超污无遮挡无码免费网站国产| 成人午夜亚洲精品无码网站| 亚洲一区二区三区国产精华液| 久久精品免费观看| 午夜亚洲国产成人不卡在线| 久久精品国产亚洲av麻豆色欲| 一级特黄色毛片免费看| 成年美女黄网站色大免费视频| 亚洲天堂久久精品| 国产三级在线免费观看| 国产乱子伦片免费观看中字| 亚洲AV无码成人专区| 久久久久久毛片免费播放| 女人18一级毛片免费观看| 亚洲色图校园春色| 免费无码成人AV在线播放不卡| 亚洲成a人片在线观| 日韩插啊免费视频在线观看| 久久精品国产亚洲AV嫖农村妇女| 免费看国产成年无码AV片| AV激情亚洲男人的天堂国语| 亚洲啪啪AV无码片| 中文字幕免费不卡二区| 亚洲色偷偷偷鲁综合| 24小时日本韩国高清免费| 久久综合亚洲色HEZYO社区| 欧美a级成人网站免费| 男人和女人高潮免费网站| 啊灬啊灬别停啊灬用力啊免费看| 亚洲av中文无码乱人伦在线观看| 成年午夜视频免费观看视频| 特级av毛片免费观看| 亚洲人成网站色在线入口| 精品亚洲成A人在线观看青青| 亚洲日韩一页精品发布| 成人av免费电影|