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

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

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

    隨筆-34  評(píng)論-1965  文章-0  trackbacks-0

    國(guó)際化是商業(yè)系統(tǒng)中不可或缺的一部分,所以無(wú)論您學(xué)習(xí)的是什么Web框架,它都是必須掌握的技能。

    其實(shí),Struts 1.x在此部分已經(jīng)做得相當(dāng)不錯(cuò)了。它極大地簡(jiǎn)化了我們程序員在做國(guó)際化時(shí)所需的工作,例如,如果您要輸出一條國(guó)際化的信息,只需在代碼包中加入FILE-NAME_xx_XX.properties(其中FILE-NAME為默認(rèn)資源文件的文件名),然后在struts-config.xml中指明其路徑,再在頁(yè)面用<bean:message>標(biāo)志輸出即可。

    不過,所謂“沒有最好,只有更好”。Struts 2.0并沒有在這部分止步,而是在原有的簡(jiǎn)單易用的基礎(chǔ)上,將其做得更靈活、更強(qiáng)大。

    國(guó)際化Hello World

    下面讓我們看一個(gè)例子——HelloWorld。這個(gè)例子演示如何根據(jù)用戶瀏覽器的設(shè)置輸出相應(yīng)的HelloWorld。

    1. 在Eclipse創(chuàng)建工程配置開發(fā)和運(yùn)行環(huán)境(如果對(duì)這個(gè)步驟有問題,可以參考我早前的文章《為Struts 2.0做好準(zhǔn)備》)。
    2. 在src文件夾中加入struts.properties文件,內(nèi)容如下:
      struts.custom.i18n.resources=globalMessages
      Struts 2.0有兩個(gè)配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。
      • struts.xml用于應(yīng)用程序相關(guān)的配置
      • struts.properties用于Struts 2.0的運(yùn)行時(shí)(Runtime)的配置
    3. 在src文件夾中加入globalMessages_en_US.properties文件,內(nèi)容如下:
      HelloWorld=Hello World!
    4. 在src文件夾中加入globalMessages_zh_CN.properties文件,內(nèi)容如下:
      HelloWorld=你好,世界!
      在此想和大家分享一個(gè)不錯(cuò)的編寫properties文件的Eclipse插件(plugin),有了它我們?cè)诰庉嬕恍┖?jiǎn)體中文、繁體中文等Unicode文本時(shí),就不必再使用native2ascii編碼了。您可以通過Eclipse中的軟件升級(jí)(Software Update)安裝此插件,步驟如下:
      1、展開Eclipse的Help菜單,將鼠標(biāo)移到Software Update子項(xiàng),在出現(xiàn)的子菜單中點(diǎn)擊Find and Install;
      2、在Install/Update對(duì)話框中選擇Search for new features to install,點(diǎn)擊Next;
      3、在Install對(duì)話框中點(diǎn)擊New Remote Site;
      4、在New Update Site對(duì)話框的Name填入“PropEdit”或其它任意非空字符串,在URL中填入http://propedit.sourceforge.jp/eclipse/updates/;
      5、在Site to include to search列表中,除上一步加入的site外的其它選項(xiàng)去掉,點(diǎn)擊Finsih;
      6、在彈出的Updates對(duì)話框中的Select the features to install列表中將所有結(jié)尾為“3.1.x”的選項(xiàng)去掉(適用于Eclipse 3.2版本的朋友);
      7、點(diǎn)擊Finish關(guān)閉對(duì)話框;
      8、在下載后,同意安裝,再按提示重啟Eclipse,在工具條看到形似vi的按鈕表示安裝成功,插件可用。此時(shí),Eclpise中所有properties文件的文件名前有綠色的P的圖標(biāo)作為標(biāo)識(shí)。
    5. 在WebContent文件夾下加入HelloWorl.jsp文件,內(nèi)容如下:
      <%@ page ?contentType="text/html; charset=UTF-8"%>
      <%@taglib prefix="s" uri="/struts-tags"%>
      <html>
      <head>
      ? ?
      <title>Hello World</title>
      </head>
      <body>
      ? ?
      <h2><s:text name="HelloWorld"/></h2>
      ? ?
      <h2><s:property value="%{getText('HelloWorld')}"/></h2>
      </body>
      </html>
    6. 發(fā)布運(yùn)行應(yīng)用程序,在瀏覽器地址欄中輸入http://localhost:8080/Struts2_i18n/HelloWorld.jsp ,出現(xiàn)圖1所示頁(yè)面。
      圖1 中文輸出
      圖1 中文輸出
    7. 將瀏覽器的默認(rèn)語(yǔ)言改為“英語(yǔ)(美國(guó))”,刷新頁(yè)面,出現(xiàn)圖2所示頁(yè)面。
      圖2 英文輸出
      圖2 英文輸出
    上面的例子的做法,與Struts 1.x的做法相似,似乎并不能體現(xiàn)Struts 2.0的優(yōu)勢(shì)。不過,我在上面的例子用了兩種方法來顯示國(guó)際化字符串,其輸出是相同的。其實(shí),這就是Struts 2.0的一個(gè)優(yōu)勢(shì),因?yàn)樗J(rèn)支持EL,所示我們可以用getText方法來簡(jiǎn)潔地取得國(guó)際化字符串。另外更普遍的情況——在使用UI表單標(biāo)志時(shí),getText可以用來設(shè)置label屬性,例如:
    <s:textfield name="name" label="%{getText('UserName')}"/>

    資源文件查找順序

    之所以說Struts 2.0的國(guó)際化更靈活是因?yàn)樗梢阅芨鶕?jù)不同需要配置和獲取資源(properties)文件。在Struts 2.0中有下面幾種方法:

    1. 使用全局的資源文件,方法如上例所示。這適用于遍布于整個(gè)應(yīng)用程序的國(guó)際化字符串,它們?cè)诓煌陌╬ackage)中被引用,如一些比較共用的出錯(cuò)提示;
    2. 使用包范圍內(nèi)的資源文件。做法是在包的根目錄下新建名的package.properties和package_xx_XX.properties文件。這就適用于在包中不同類訪問的資源;
    3. 使用Action范圍的資源文件。做法為Action的包下新建文件名(除文件擴(kuò)展名外)與Action類名同樣的資源文件。它只能在該Action中訪問。如此一來,我們就可以在不同的Action里使用相同的properties名表示不同的值。例如,在ActonOne中title為“動(dòng)作一”,而同樣用title在ActionTwo表示“動(dòng)作二”,節(jié)省一些命名工夫;
    4. 使用<s:i18n>標(biāo)志訪問特定路徑的properties文件。使用方法請(qǐng)參考我早前的文章《常用的Struts 2.0的標(biāo)志(Tag)介紹》。在您使用這一方法時(shí),請(qǐng)注意<s:i18n>標(biāo)志的范圍。在<s:i18n name="xxxxx">到</s:i18n>之間,所有的國(guó)際化字符串都會(huì)在名為xxxxx資源文件查找,如果找不到,Struts 2.0就會(huì)輸出默認(rèn)值(國(guó)際化字符串的名字)。

    上面我列舉了四種配置和訪問資源的方法,它們的范圍分別是從大到小,而Struts 2.0在查找國(guó)際化字符串所遵循的是特定的順序,如圖3所示:

    圖3 資源文件查找順序圖
    圖3 資源文件查找順序圖

    假設(shè)我們?cè)谀硞€(gè)ChildAction中調(diào)用了getText("user.title"),Struts 2.0的將會(huì)執(zhí)行以下的操作:

    1. 查找ChildAction_xx_XX.properties文件或ChildAction.properties;
    2. 查找ChildAction實(shí)現(xiàn)的接口,查找與接口同名的資源文件MyInterface.properties;
    3. 查找ChildAction的父類ParentAction的properties文件,文件名為ParentAction.properties;
    4. 判斷當(dāng)前ChildAction是否實(shí)現(xiàn)接口ModelDriven。如果是,調(diào)用getModel()獲得對(duì)象,查找與其同名的資源文件;
    5. 查找當(dāng)前包下的package.properties文件;
    6. 查找當(dāng)前包的父包,直到最頂層包;
    7. 在值棧(Value Stack)中,查找名為user的屬性,轉(zhuǎn)到user類型同名的資源文件,查找鍵為title的資源;
    8. 查找在struts.properties配置的默認(rèn)的資源文件,參考例1;
    9. 輸出user.title。

    參數(shù)化國(guó)際化字符串

    許多情況下,我們都需要在動(dòng)行時(shí)(runtime)為國(guó)際化字符插入一些參數(shù),例如在輸入驗(yàn)證提示信息的時(shí)候。在Struts 2.0中,我們通過以下兩種方法做到這點(diǎn):

    1. 在資源文件的國(guó)際化字符串中使用OGNL,格式為${表達(dá)式},例如:
      validation.require=${getText(fileName)} is required
    2. 使用java.text.MessageFormat中的字符串格式,格式為{ 參數(shù)序號(hào)(從0開始), 格式類形(number | date | time | choice), 格式樣式},例如:
      validation.between=Date must between {0, date, short} and {1, date, short}
    在顯示這些國(guó)際化字符時(shí),同樣有兩種方法設(shè)置參數(shù)的值:
    1. 使用標(biāo)志的value0、value1...valueN的屬性,如:
      <s:text name="validation.required" value0="User Name"/>
    2. 使用param子元素,這些param將按先后順序,代入到國(guó)際化字符串的參數(shù)中,例如:
      <s:text name="validation.required">
      ? ?
      <s:param value="User Name"/>
      </s:text>

    讓用戶方便地選擇語(yǔ)言

    開發(fā)國(guó)際化的應(yīng)用程序時(shí),有一個(gè)功能是必不可少的——讓用戶快捷地選擇或切換語(yǔ)言。在Struts 2.0中,通過ActionContext.getContext().setLocale(Locale arg)可以設(shè)置用戶的默認(rèn)語(yǔ)言。不過,由于這是一個(gè)比較普遍的應(yīng)用場(chǎng)景(Scenario),所以Struts 2.0為您提供了一個(gè)名i18n的攔截器(Interceptor),并在默認(rèn)情況下將其注冊(cè)到攔截器鏈(Interceptor chain)中。它的原理為在執(zhí)行Action方法前,i18n攔截器查找請(qǐng)求中的一個(gè)名為"request_locale"的參數(shù)。如果其存在,攔截器就將其作為參數(shù)實(shí)例化Locale對(duì)象,并將其設(shè)為用戶默認(rèn)的區(qū)域(Locale),最后,將此Locale對(duì)象保存在session的名為“WW_TRANS_I18N_LOCALE”的屬性中。

    下面,我將提供一完整示例演示它的使用方法。

    package tutorial;

    import java.util.Hashtable;
    import java.util.Locale;
    import java.util.Map;

    publicclass Locales {
    ? ?
    public Map<String, Locale> getLocales() {
    ? ? ? ?Map
    <String, Locale> locales =new Hashtable<String, Locale>(2);
    ? ? ? ?locales.put(
    "American English", Locale.US);
    ? ? ? ?locales.put(
    "Simplified Chinese", Locale.CHINA);
    ? ? ? ?
    return locales;
    ? ?}

    }
    tutorial/Locales.java

    <%@taglib prefix="s" uri="/struts-tags"%>
    <script type="text/javascript">
    <!--
    ? ?
    function langSelecter_onChanged() {
    ? ? ? ? document.langForm.submit();
    ? ? }
    //-->
    </script>
    <s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
    <s:bean id="locales" name="tutorial.Locales"/>
    <form action="<s:url includeParams="get" encode="true"/>" name="langForm"?
    ? ? style="background-color: powderblue; padding-top: 4px; padding-bottom: 4px;">
    ? ? Language:
    <s:select label="Language"?
    ? ? ? ? list
    ="#locales.locales" listKey="value" ? ?listValue="key"
    ? ? ? ? value
    ="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
    ? ? ? ? name
    ="request_locale" id="langSelecter"?
    ? ? ? ? onchange
    ="langSelecter_onChanged()" theme="simple"/>
    </form>
    LangSelector.jsp

    上述代碼的原理為,LangSelector.jsp先實(shí)例化一個(gè)Locales對(duì)象,并把對(duì)象的Map類型的屬性locales賦予下拉列表(select) 。如此一來,下拉列表就獲得可用語(yǔ)言的列表。大家看到LangSelector有<s:form>標(biāo)志和一段Javascript腳本,它們的作用就是在用戶在下拉列表中選擇了后,提交包含“reqeust_locale”變量的表單到Action。在打開頁(yè)面時(shí),為了下拉列表的選中的當(dāng)前區(qū)域,我們需要到session取得當(dāng)前區(qū)域(鍵為“WW_TRANS_I18N_LOCALE”的屬性),而該屬性在沒有設(shè)置語(yǔ)言前是為空的,所以通過值棧中l(wèi)ocale屬性來取得當(dāng)前區(qū)域(用戶瀏覽器所設(shè)置的語(yǔ)言)。

    你可以把LangSelector.jsp作為一個(gè)控件使用,方法是在JSP頁(yè)面中把它包含進(jìn)來,代碼如下所示:
    <s:include value="/LangSelector.jsp"/>

    在例1中的HellloWorld.jsp中<body>后加入上述代碼,并在struts.xml中新建Action,代碼如下:
    <action name="HelloWorld">
    ? ?
    <result>/HelloWorld.jsp</result>
    </action>

    或者,如果你多個(gè)JSP需要實(shí)現(xiàn)上述功能,你可以使用下面的通用配置,而不是為每一個(gè)JSP頁(yè)面都新建一個(gè)Action。
    <action name="*">
    ? ?
    <result>/{1}.jsp</result>
    </action>

    分布運(yùn)行程序,在瀏覽器的地址欄中輸入http://localhost:8080/Struts2_i18n/HelloWorld.action,出現(xiàn)圖4所示頁(yè)面:
    圖3 HelloWorld.action
    圖3 HelloWorld.action

    在下拉列表中,選擇“American English”,出現(xiàn)圖5所示頁(yè)面:
    圖3 HelloWorld.action
    圖4 HelloWorld.action
    可能大家會(huì)問為什么一定要通過Action來訪問頁(yè)面呢?
    你可以試一下不用Action而直接用JSP的地址來訪問頁(yè)面,結(jié)果會(huì)是無(wú)論你在下拉列表中選擇什么,語(yǔ)言都不會(huì)改變。這表示不能正常運(yùn)行的。其原因?yàn)槿绻苯邮褂肑SP訪問頁(yè)面,Struts 2.0在web.xml的配置的過濾器(Filter)就不會(huì)工作,所以攔截器鏈也不會(huì)工作。
    posted on 2006-11-01 19:06 Max 閱讀(73181) 評(píng)論(123)  編輯  收藏 所屬分類: Struts 2.0系列
    評(píng)論共2頁(yè): 1 2 下一頁(yè) 

    評(píng)論:
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-03-23 19:43 | coombe
    辛苦啦:)
    請(qǐng)教一個(gè)問題,我想把List里的內(nèi)容存在資源文件中,比如說:
    我寫了兩個(gè)單選鈕分別用來表示男和女,我試驗(yàn)了好多次都
    行不通,多謝了!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-03-24 22:32 | Max
    @coombe
    你可以用getText()在代碼讀取資源文件。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-03-27 09:41 | coombe
    非常感謝^_^
    不過,如果我沒猜錯(cuò)的話,你是想讓我在Action的Input方法里用getText讀出資源,然后再生成List對(duì)象傳到頁(yè)面。

    這種方法是可行的,不過有時(shí)也會(huì)出問題。比如說,我給頁(yè)面添加了自動(dòng)校驗(yàn)功能,如果校驗(yàn)失敗,List對(duì)象就沒了:(在execute方法里再傳一遍都不行:(

    后來實(shí)在沒辦法,我就把它放到了Session里了。但是感覺這種方法太齷齪了,所以就問你一下啦:)

    我現(xiàn)在的做法是把List里的元素單個(gè)保存在資源文件里,然后在頁(yè)面里讀出來之后再拼裝。不知道你有沒有更好的方法?
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-12 09:57 | crayz
    你好~剛接觸struts的新手
    我依照你的 為Struts 2.0做好準(zhǔn)備 測(cè)試成功
    然后在想自己添加properties文件 。
    定義一個(gè)properties文件 里面添加了
    context.hello=It's a fine day today

    保存 為Hello.properties保存在Hello.class一個(gè)目錄中
    然后改 了 SayHello.jsp的 <title>把原來標(biāo)簽的改成了
    <title><s:text name="context.name" /></title>
    保存
    可瀏覽SayHello.jsp時(shí)標(biāo)題顯示為context.name而不是我定義的
    It's a fine day today
    用getText 的話則出現(xiàn) 標(biāo)題為空的情況


    接著我按照文檔 把Hello.properties文件改成
    package.properties放 到跟目錄 失敗
    放到classes目錄 失敗..
    放到tutorial目錄也 失敗


    自定義properties文件
    在classes文件夾中新建 struts.properties
    添加了 struts.custom.i18n.resources=pa.properties
    Hello.properties也相應(yīng)改成了pa.properties 放到classes文件夾
    也失敗了..
    已經(jīng)困惑兩天了..
    你看我哪里出錯(cuò)了?
    struts.xml 和web.xml都沒動(dòng)
    lib加了最需要的5個(gè)jar(我用的是2.06之有個(gè)core.jar 沒有struts2-api和struts2-extra.jar)
    運(yùn)行環(huán)境是tomcat 6.0

    謝謝了

      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-12 09:59 | crayz
    更正下
    <title><s:text name="context.name" /></title>
    應(yīng)該是<title><s:text name="context.hello" /></title>
    沒有寫錯(cuò)~
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-13 09:50 | Max
    @crayz
    可能你漏了什么東西,要不我把我的源代碼發(fā)給你。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-16 22:37 | 杰克
    propEdit插件里的vi插件包是模擬vi編輯器環(huán)境的吧?我看不需要安裝。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-23 15:30 | jiajia
    我的action名字叫LoginAction,我在同一個(gè)包下面建了LoginAction.properties的文件,就是不能讀資源文件里的信息,請(qǐng)問是不是要有什么jar包,我現(xiàn)在的jar有:commons-logging-1.0.4.jar,
    commons-validator-1.3.0.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.6.jar,xwork-2.0.1.jar  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-24 13:08 | ddd
    請(qǐng)問,properties文件,需要設(shè)置什么編碼?

    默認(rèn)識(shí)iso-8859-1的, 無(wú)法輸入中文。。

    還有, PropEdit偶得無(wú)法更新, 提示需要其他的包。。。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-04-24 16:06 | 想飛就飛
    我使用struts.properties配置的struts.custom.i18n.resources=globalMessages 國(guó)際化就可以

    可是在對(duì)應(yīng)的包下面放package.properties 內(nèi)容一樣
    國(guó)際化就顯示不了

      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-04-24 16:40 | 想飛就飛
    試驗(yàn)了一下,基本情況是這樣的
    只有在struts.properties中配置的struts.custom.i18n.resources=xxxxxx
    才適用于所有的jsp頁(yè)面

    如果是定義的package級(jí)別的,或者action級(jí)別的多語(yǔ)種x.properties文件
    必須要通過訪問定義的xxx.action才可以填充jsp頁(yè)面的多語(yǔ)種信息

      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-04-25 09:38 | Max
    @jiajia
    應(yīng)該不是欠JAR包的問題,因?yàn)橐话闱稪AR包,都會(huì)有ClassNotFoundException的。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-09 11:51 | EricaseJang
    你好。您的文章很實(shí)用。
    我想問一下,如果我的文字是通過
    <s:i18n name="struts">
    <s:text name="demo"/>
    </s:i18n>
    來讀取并顯示的,那么有沒有辦法設(shè)置多種語(yǔ)言呢?
    必須手動(dòng)的先判斷瀏覽器語(yǔ)言設(shè)置然后指定不同的資源文件嗎?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-09 13:56 | EricaseJang
    呵呵,搞定了。像剛開始那樣子就行了。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-19 19:34 | 不用名字行不行
    文個(gè)問題,以前用struts1的時(shí)候,我喜歡在全局資源文件用用很多帶參數(shù)的國(guó)際化字符串,尤其是和驗(yàn)證有關(guān)的,比如errors.required={} is required。這樣在velidate中可以使用參數(shù)化的調(diào)用。感覺很方便。但到了struts2里面,似乎沒有這個(gè)功能了。想問一下,在struts2中怎么在驗(yàn)證器中實(shí)現(xiàn)國(guó)際化。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-22 01:43 | 杰克
    最近又試了一下,直接提交一個(gè)帶request_locale參數(shù)的超鏈接也可以改變locale。例如
    http://localhost:8080/Struts2_i18n/HelloWorld.action?request_locale=zh_CN,
    http://localhost:8080/Struts2_i18n/HelloWorld.action?request_locale=en
    大約攔截器在攔截到該參數(shù)后自動(dòng)做了String與Locale之間的類型轉(zhuǎn)換。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-29 21:50 | jezz
    我也測(cè)試了你的第一個(gè)例子
    控制臺(tái)報(bào)錯(cuò)我沒用IDE就是手工寫的
    錯(cuò)誤信息如下:
    [2007-05-29 21:23:38,290] [http-8080-1] DEBUG com.opensymphony.xwork2.config.Con
    figurationManager - Checking ConfigurationProviders for reload.
    [2007-05-29 21:23:38,321] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork
    2.DefaultTextProvider@1142196], property=org]
    [2007-05-29 21:23:38,493] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork
    2.DefaultTextProvider@1142196], property=struts]

    哪個(gè)struts.properties文件和其他的文件不知道放在那?
    如果方便的話就把源文件發(fā)給我!謝謝!
    我的email:lijie250#gmail.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-30 21:27 | Max
    @jezz
    struts.properties放在src文件夾(源代碼的根目錄)下。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-30 21:49 | jezz
    我現(xiàn)在成功了!
    但是TOMCAT的控制臺(tái)有很多錯(cuò)誤信息!
    不知道那設(shè)置錯(cuò)了!
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork
    2.ActionSupport@16877f8, com.opensymphony.xwork2.DefaultTextProvider@1d95da8], p
    roperty=templateDir]
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=org.apache.struts2.util
    .AttributeMap@5a2eaa, property=templateDir]
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.XWork
    MapPropertyAccessor - Entering getProperty (ognl.OgnlContext@3a55c38f,org.apache
    .struts2.util.AttributeMap@5a2eaa,templateDir)
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork
    2.ActionSupport@16877f8, com.opensymphony.xwork2.DefaultTextProvider@1d95da8], p
    roperty=templateDir]
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork
    2.ActionSupport@16877f8, com.opensymphony.xwork2.DefaultTextProvider@1d95da8], p
    roperty=templateDir]
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG com.opensymphony.xwork2.util.Insta
    ntiatingNullHandler - Entering nullPropertyValue [target=org.apache.struts2.util
    .AttributeMap@5a2eaa, property=templateDir]
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG org.apache.struts2.components.UIBe
    an - Rendering template /template/simple/select
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG freemarker.cache - template/simple
    /select.ftl[zh_CN,UTF-8,parsed] cached copy not yet stale; using cached.
    [2007-05-30 21:40:35,843] [http-8080-1] DEBUG org.apache.struts2.components.temp
    late.FreemarkerTemplateEngine - Rendering template /template/simple/select.ftl
    [2007-05-30 21:40:35,859] [http-8080-1] DEBUG freemarker.cache - template/simple
    /scripting-events.ftl[zh_CN,UTF-8,parsed] cached copy not yet stale; using cache
    d.
    [2007-05-30 21:40:35,859] [http-8080-1] DEBUG freemarker.cache - template/simple
    /common-attributes.ftl[zh_CN,UTF-8,parsed] cached copy not yet stale; using cach
    ed.
    [2007-05-30 21:40:35,859] [http-8080-1] DEBUG com.opensymphony.xwork2.config.Con
    figurationManager - Checking ConfigurationProviders for reload.  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-06-08 22:04 | 隨風(fēng)歌唱
    MAX兄、你說的那個(gè)插件安完以后.properties文件是有P字樣式綠色標(biāo)識(shí)、但是怎么使用?

    8、在下載后,同意安裝,再按提示重啟Eclipse,在工具條看到形似vi的按鈕表示安裝成功,插件可用。此時(shí),Eclpise中所有properties文件的文件名前有綠色的P的圖標(biāo)作為標(biāo)識(shí)。

    形似vi的按鈕?能否截個(gè)圖看、或再解釋下如何用  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-06-14 09:38 | Max
    @隨風(fēng)歌唱
    很簡(jiǎn)單,你直接在*.properties文件輸入中文字符,在保存的時(shí)候,插件自動(dòng)將其轉(zhuǎn)為ascii編碼。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-06-19 11:23 | tafse
    你好,我在Action中用ActionContext.getContext().setLocale(Locale.TAIWAN)設(shè)置區(qū)域,但是一直不成功,只顯示在properties中的名字,這是為什么?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-06-25 11:29 | king
    你好。問下你的例子有源碼嗎 ?
    能不能給發(fā)個(gè)阿!!!!
    謝謝!!!!!!!!!
    majun4678@163.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-06-29 11:51 | eric
    如何解決顯示時(shí)中文亂碼的問題?properties文件編碼是utf-8,jsp頁(yè)面也是  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-06-30 23:51 | Max
    @eric
    properties文件應(yīng)該是ascii編碼方式的,如\u4e2d\u6587這樣的格式,否則在Java中會(huì)讀到亂碼。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-04 17:05 | 妖狐
    你好,我參考按照您的方法也做了國(guó)際化的試驗(yàn),但是遇到下面的問題。
    當(dāng)IE設(shè)置為en-US時(shí)顯示正常:
    Hello World
    Hello World
    但是當(dāng)設(shè)置成為zh-CN時(shí),卻顯示為:
    HelloWorld
    請(qǐng)問引起這個(gè)問題的原因大概是什么呢
    謝謝

      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-04 23:28 | Max
    應(yīng)該找不到對(duì)應(yīng)的國(guó)際化字符串所致,請(qǐng)檢查你的globalMessages_zh_CN.properties文件的內(nèi)容是否正確。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-11 13:29 | yiwuyun
    many thanks 沒有你的提點(diǎn),我始終找不到亂碼的根源 。下了你說的那個(gè)插件之后,馬上就查出自己文件中的亂碼了。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-23 15:38 | abao
    struts.custom.i18n.resources=globalMessages 后面的值和前面的東西表示什么?是寫死的嗎?
    <%@taglib prefix="s" uri="/struts-tags"%>這里的URI指向哪里啊?
    為什么在JSP中調(diào)用<s:出錯(cuò)?????
    <h2><s:text name="HelloWorld"/></h2>
    <h2><s:property value="%{getText('HelloWorld')}"/></h2>
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-23 23:56 | Max
    @abao
    1、struts.custom.i18n.resources=globalMessages配置Struts 2的全局資源文件的位置,你可以寫成struts.custom.i18n.resources=xxx.xx形式;

    2、<%@taglib prefix="s" uri="/struts-tags"%>的URI其實(shí)指向的是:struts2-core-2.0.8.jar中的META-INF/struts-tags.tld文件;

    3、你所謂的出錯(cuò)是什么意思?IDE的提示,如果只是如此可以不用理會(huì);否則請(qǐng)檢查struts2-core-2.0.8.jar是否在你的“Build Path”里面。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-07-27 17:55 | aaron
    @crayz


    把所有文件保存,
    重新啟動(dòng)tomcat,
    重新打開ie進(jìn)行瀏覽

    我也遇到和你一樣的問題,就這樣解決了
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-07-28 21:26 | yiwuyun
    @yiwuyun
    哈哈,給大家補(bǔ)充一下,我在實(shí)踐中發(fā)現(xiàn)的。
    如果表單提交的時(shí)候使用<s:form>就不會(huì)出現(xiàn)亂碼,
    但是用<form>提交就會(huì)出現(xiàn)亂碼。可能struts2.0內(nèi)部會(huì)自動(dòng)實(shí)現(xiàn)轉(zhuǎn)換吧,
    而<form>不會(huì)自動(dòng)轉(zhuǎn)換。還有一個(gè)有趣的現(xiàn)象,你把prefix="s" 改為
    prefix="ww" 再把后面的所有<s:....>改為<ww:....>一樣可以正常運(yùn)行。
    而且還不止,你改為其他任意的都可以。比如改為<yi:....>當(dāng)然前面的也要改。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-13 12:46 | 陳利
    博主,我建的工程老是報(bào)腳本錯(cuò)誤。您能否給我一份您的源碼?我的郵箱:crazycl@163.com。謝謝您了。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-17 08:30 | GOLDFISH
    MAX大哥,你太猛了. 你現(xiàn)在是我的目標(biāo).
    我現(xiàn)在每天都到你這學(xué)Struts2.0.  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-17 11:22 | ArthurWang
    十分感謝你的關(guān)于Struts 2的一系列文章,最近我正在學(xué)習(xí)Struts 2,你的文章講解的很全面細(xì)致,所以很感謝你的文章!
    請(qǐng)問你的文章來源是哪里,能不能共享一下,因?yàn)槲亿s時(shí)間,另外請(qǐng)問你關(guān)于Struts2與Webwork2有什么區(qū)別和進(jìn)步,有沒有這方面的文章,多謝指教!
    希望樓主能夠指教,我的email:wychi714813@yahoo.com.cn  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-23 21:26 | louleigh
    MAX 哥..
    我按照你的東西來寫。他提示錯(cuò)誤.
    麻煩你把第二個(gè)的源代碼給我一份.謝謝max哥了
    9803912@qq.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-23 21:36 | louleigh
    max哥.不用傳了。我調(diào)通了。
    原來是一個(gè)包的名字寫錯(cuò)啦..

    max哥..你真是我的偶像. 是你讓我覺得struts2如此的容易。.
    拜一拜!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-08-31 17:22 | tf
    globalMessages_zh_CN.propertiesl里輸入中文后保存就會(huì)出錯(cuò),
    請(qǐng)問MAX這是什么原因?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-09-09 16:52 | 初級(jí)
    @tf
    你是不沒裝max說的插件,就是那個(gè)propedit,我開始沒裝輸入中文就報(bào)錯(cuò),但是裝上后就好了,我eclipse用3.2,下載的是propedit_4.4.0.zip,這個(gè)適合eclipse 3.0 3.1 3.2,下載地址:http://propedit.sourceforge.jp/eclipse/updates/
    還想問一下其他的朋友,如果不用這個(gè)插件,怎么才能輸入中文不報(bào)錯(cuò)!!!!!!!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-09-24 11:44 | Jackson
    @初級(jí)
    如果不裝這個(gè)插件的話,我是把內(nèi)容先輸入記事本中,然后在DOS下運(yùn)行native2ascii.exe,將記事本中的內(nèi)容拷貝到DOS環(huán)境下,回車就可以輸出中文的ASCII碼了!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-10-05 13:37 | 大貓
    @想飛就飛:
    "如果是定義的package級(jí)別的,或者action級(jí)別的多語(yǔ)種x.properties文件
    必須要通過訪問定義的xxx.action才可以填充jsp頁(yè)面的多語(yǔ)種信息"
    您可以把實(shí)例發(fā)一份給我嗎?謝謝,我的郵箱是anne.yang@stella.com.hk
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-10-05 13:40 | 大貓
    @Max:
    上面的問題,Max先生有時(shí)間的話能給我發(fā)個(gè)實(shí)例嗎?謝謝了!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-10-06 10:54 | 大貓
    大家都忙著過節(jié)了吧,我終於鼓搗出來了!
    不過還是要謝謝Max和想飛就飛所指的方向!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-10-09 11:05 | 哈哈
    如果你的第2個(gè)例子輸入/HelloWorld.jsp的時(shí)候語(yǔ)言能改變就更好了。
    例子上要求的時(shí)候/HelloWorld.action,感覺這樣不好,怎么才能直接輸入/HelloWorld.jsp,選擇語(yǔ)言就能起作用?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-11-19 16:03 | 高山流水
    我想在攔截器的中使用參數(shù)化的國(guó)際化資源,
    比如說我想用 message 的 key 中使用帶參數(shù)的國(guó)際化資源,
    請(qǐng)問怎么用?。。

    **攔截器
    <validators>
    。。。。。。。。。。
    <field name="birthday">
    <field-validator type="date">
    <message key="date.format.bad" />
    </field-validator>
    </field>
    </validators>
    ------------------------
    **國(guó)際化資源文件
    date.format.bad={0}日期格式錯(cuò)誤

    ---------------------
    請(qǐng)問 這兩個(gè)地方應(yīng)該怎么寫,才能在頁(yè)面得到如下效果:
    ** 生日日期格式錯(cuò)誤
    謝謝!!
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-11-20 14:05 | 高山流水
    @不用名字行不行
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-05-19 19:34 | 不用名字行不行
    問個(gè)問題,以前用struts1的時(shí)候,我喜歡在全局資源文件用用很多帶參數(shù)的國(guó)際化字符串,尤其是和驗(yàn)證有關(guān)的,比如errors.required= {} is required。這樣在velidate中可以使用參數(shù)化的調(diào)用。感覺很方便。但到了struts2里面,似乎沒有這個(gè)功能了。想問一下,在 struts2中怎么在驗(yàn)證器中實(shí)現(xiàn)國(guó)際化。
    ------------
    我也遇到了這個(gè)問題,就是想在Xxx-validation.xml 中使用
    <message key="{}errors.required" />
    這種應(yīng)該怎么用。。?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-11-21 17:10 | feng
    max:
    能不能給我份源碼呀 是那個(gè)《為Struts 2.0做好準(zhǔn)備》的源碼
    我現(xiàn)在在看struts2的國(guó)際化
    想具體的看一下 可是不知道如何入手 謝謝了
    我的email: duguzhongnuo@163.com
    謝謝了  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-11-21 17:13 | feng
    我按照你的方法做了個(gè)例子
    可是出不來 是不是文件的存放路徑有關(guān)呀
    急 急 急  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-11-22 16:26 | leesword
    請(qǐng)問我用struts 2 在 Action 里面設(shè)置

    session.put(Globals.LOCALE_KEY,
    Locale.CHINA);
    之后,它的跳轉(zhuǎn)頁(yè)面又包含其他頁(yè)面時(shí),(例如這個(gè)Action 跳到Index.jsp,Index.jsp 又包括header.jsp,header.jsp 包含有國(guó)際化字段)這個(gè)Locale信息不能傳到header.jsp頁(yè)面,也就不能實(shí)現(xiàn)國(guó)際化,我在struts1里面都可以成功的,不知道在struts2里面為何會(huì)這樣,能不能解決呢?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2007-11-23 14:34 | 高山流水
    @leesword
    需要通過action 來訪問 jsp 。。  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-11-26 15:18 | hahha
    @大貓
    怎么出來的  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-12-03 16:06 | 劉文濤
    請(qǐng)問 max :

    struts.xml , struts.properties , productAction-conversion.properties,
    globalMessages.properties,globalMessages_zh_CN.properties

    這些配置文件 默認(rèn) 都要 放在 classpath下面 , 也就是 \WEB-INF\classes下面.

    這樣文件多的時(shí)候總感覺有點(diǎn)亂,

    有沒有 辦法 把這些文件 分別放在不同文件夾下面. 在 web.xml里面指定一下地址.  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-12-04 09:00 | 劉文濤
    請(qǐng)教一下 :

    LangSelector.jsp 文件中 :

    value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"

    這句話 ? 后面的 locale 是什么意思,是哪里來的 ?

    謝謝  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-12-11 17:07 | Jasen Hsu
    @crayz
    struts.custom.i18n.resources=pa.properties
    后綴除去
    struts.custom.i18n.resources=pa  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2007-12-28 16:13 | ElgooG
    不好用啊  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-01-07 16:11 | apple
    謝謝你這長(zhǎng)時(shí)間來教授Struts2,就是問你下,為什么在我的Struts.properties配置文件不起作用啊,就是說隨便寫什么都沒反映,例如加上struts.custom.i18n.resources=globalMessages
    但globalMessages_zh_CN.properties根本就沒加載,是什么 原因啊???
    Struts.properties配置文件能自動(dòng)加載嗎?還需要想哪個(gè)文件里配置它的位置嗎???
    謝謝樓主,告訴我的Struts.properties配置文件不起作用的原因??
    我的油箱:dujian886@126.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-01-08 17:21 | Leasen
    樓上的可能是路徑放的不對(duì) 你放SRC目錄下試一下

    麻煩樓主把國(guó)際化例子的源碼發(fā)一份給我,先謝過了

    Leasen@gmail.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-02-22 17:47 | laibin
    學(xué)習(xí)  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-02-28 14:57 | devil
    您好 能否發(fā)份源碼給我 我弄的總是有問題,中文不顯示
    hua_xing_dong@sina.com  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-03-13 02:42 | winnow
    @coombe
    你可以像例子里面那樣把list以List或者M(jìn)ap形式放在一個(gè)類里面,然后在頁(yè)面用bean標(biāo)簽取出來,這不過需要在這個(gè)類里面取國(guó)際化資源,這個(gè)和action類里面取有點(diǎn)不一樣,如下:

    publicclass Locales {

    public Map<String, Locale> getLocales() {

    //引入變量,用戶locale
    private Locale current;

    public void setCurrent(Locale cur){
    this.current = cur;
    }

    Map<String, Locale> locales =new Hashtable<String, Locale>(2);

    //用 java.util.ResourceBundle聲明一個(gè)資源束來獲取國(guó)家化資源。
    ResourceBundle bundle = ResourceBundle.getBundle("mymessageResource" , current);

    //把國(guó)際化資源中的消息添加到map key當(dāng)中
    locales.put(bundle.getString("American English"), Locale.US);
    locales.put(bundle.getString("Simplified Chinese"), Locale.CHINA);
    return locales;
    }
    }

    打完收工!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-03-13 02:46 | winnow
    @winnow
    你用bean標(biāo)簽取這個(gè)類的實(shí)例時(shí),傳入current參數(shù)就可以了。current參數(shù)取的時(shí)候和設(shè)置那個(gè)select的value一樣的,取session,沒有的話取瀏覽器設(shè)置。
    <s:bean id="locales" name="Locales">
    <s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/>
    </s:bean>

      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-03-29 13:01 | shenxinhui
    @Override
    public void validate() {
    if( "".equals(this.getUsername().trim()) || null == this.getUsername()) {

    this.addFieldError("username", this.getText("username.validation"));
    }
    if( "".equals(this.getPassword()) || null == this.getPassword() ) {

    this.addFieldError("password", this.getText("password.validation"));
    }
    }

    username.validation={0} is required!
    password.validation={0} is required!


    {0} 這個(gè)參數(shù)怎么傳遞進(jìn)去呀?大哥 幫忙解決一下  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-04-07 18:10 | 哈派
    國(guó)際化的功能是很好,但在RADIO 和SELECT表單中的LIST內(nèi)如何寫呢? 我實(shí)驗(yàn)了很多寫法都沒成功.
    可以給一個(gè)例子嗎?
    不勝感謝!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-04-30 16:06 | yjwxfpl
    效果出不來,可以發(fā)份源碼到我的郵箱不??
    謝謝:liuhuajun17@tom.com
    路徑的問題搞得頭都大啦!!!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-06-02 17:20 | gj123
    建立包一級(jí)的properties,怎么都出不來呢~~
    我有個(gè)package為Test,其中包含一個(gè)action為Hello.class
    那我的包一級(jí)的properties是應(yīng)該放在哪?文件名叫什么?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-06-05 19:00 | 無(wú)
    我照你的方法去做了,但選擇下拉框索引沒有反應(yīng)? 請(qǐng)問這是什么原因  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-06-07 22:42 | bampool
    謝謝

    struts2中還有一種嵌入?yún)?shù)動(dòng)態(tài)應(yīng)用方案,希望能加以描述
    <s:text id="title" name="item.edit"><s:param><s:text name="employee"/></s:param></s:text>


    item.edit={0} bearbeiten
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-06-18 16:56 | kiki
    max大哥,<s:property value="%{getText('HelloWorld')}" />怎么顯示的是空的阿?
    struts.custom.i18n.resources=globalMessages
    這個(gè)也是沒有問題的阿

    而且還報(bào)下面的錯(cuò)誤
    DEBUG 2008-06-18 16:49:22.718 [freemark] (): Could not find template in cache, creating new one; id=[template/xhtml/text.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:22.812 [freemark] (): Compiling FreeMarker template template/xhtml/text.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/xhtml/text.ftl
    DEBUG 2008-06-18 16:49:23.843 [freemark] (): Could not find template in cache, creating new one; id=[template/xhtml/controlheader.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:23.875 [freemark] (): Compiling FreeMarker template template/xhtml/controlheader.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/xhtml/controlheader.ftl
    DEBUG 2008-06-18 16:49:24.671 [freemark] (): Could not find template in cache, creating new one; id=[template/xhtml/controlheader-core.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:24.703 [freemark] (): Compiling FreeMarker template template/xhtml/controlheader-core.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/xhtml/controlheader-core.ftl
    DEBUG 2008-06-18 16:49:25.000 [freemark] (): Could not find template in cache, creating new one; id=[template/xhtml/tooltip.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:25.031 [freemark] (): Compiling FreeMarker template template/xhtml/tooltip.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/xhtml/tooltip.ftl
    DEBUG 2008-06-18 16:49:25.078 [freemark] (): Could not find template in cache, creating new one; id=[template/simple/text.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:25.093 [freemark] (): Compiling FreeMarker template template/simple/text.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/simple/text.ftl
    DEBUG 2008-06-18 16:49:25.500 [freemark] (): Could not find template in cache, creating new one; id=[template/simple/scripting-events.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:25.515 [freemark] (): Compiling FreeMarker template template/simple/scripting-events.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/simple/scripting-events.ftl
    DEBUG 2008-06-18 16:49:25.531 [freemark] (): Could not find template in cache, creating new one; id=[template/simple/common-attributes.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:25.578 [freemark] (): Compiling FreeMarker template template/simple/common-attributes.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/simple/common-attributes.ftl
    DEBUG 2008-06-18 16:49:25.593 [freemark] (): Could not find template in cache, creating new one; id=[template/xhtml/controlfooter.ftl[zh_CN,UTF-8,parsed] ]
    DEBUG 2008-06-18 16:49:25.609 [freemark] (): Compiling FreeMarker template template/xhtml/controlfooter.ftl[zh_CN,UTF-8,parsed] from jar:file:/D:/Program%20Files/apache-tomcat-5.5.26/webapps/struts2HelloWorld/WEB-INF/lib/struts2-core-2.0.9.jar!/template/xhtml/controlfooter.ftl
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-06-18 17:14 | kiki
    。。。
    搞定了,我把*.properties,struts.xml幾個(gè)文件都放到src文件夾下就搞定了,原來是放在webRoot下的classes文件夾下的,搞錯(cuò)了好像,應(yīng)該放在web-inf文件夾下的classes文件夾下。

    而放在src下面,部署的時(shí)候eclipse自然會(huì)把它們部署到web-inf/classes文件夾下

    ^_^,一個(gè)不小心就錯(cuò)了  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-06-18 19:25 | kiki
    <c:out value="${a>b?'a>b':'a<=b'}" />
    請(qǐng)問這個(gè)在struts2里要怎么輸出呢?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-08-06 11:48 | winny
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-08-12 15:14 | an
    <form action="<s:url includeParams="get" encode="true"/>" name="langForm" 里邊的<s:url includeParams="get" encode="true"/>,其中 includeParams="get" 的作用是改變語(yǔ)言的時(shí)候把當(dāng)前url下的request參數(shù)保留下來吧?
    例如:url: http://xxxx.action?para1=value1
    改變語(yǔ)言后,希望是http://xxxx.action?para1=value1&request_locale=zh_CN
    不過很遺憾,我試過para1這個(gè)參數(shù)丟掉了

    我系統(tǒng)中其他使用 includeParams="get" 的地方都沒問題

    請(qǐng)問max,還需要其他地方的什么設(shè)置么?
    或者,這個(gè)是struts2的bug  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-09-24 17:01 | 菜鳥
    select表單中的list內(nèi)如何實(shí)現(xiàn)國(guó)際化,可以給一個(gè)例子嗎? 我的郵箱是zhangxh164110@163.com,謝謝  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-09-26 12:23 | wangs130
    為什么jsp就不攔截,/* 不是攔截所有文件嗎?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-10-06 10:36 | N.J.Paul
    eclipse3.4,應(yīng)該用那個(gè)版本的propedit插件呢?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-12-04 20:30 | Charles
    @bird

    瀏覽器的工具-Internet選項(xiàng)-語(yǔ)言-把美國(guó)英語(yǔ)放在最上面  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-12-05 15:30 | txy
    我照你的方法去做了,但選擇下拉框索引沒有反應(yīng)? 請(qǐng)問這是什么原因
    謝謝!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2008-12-05 16:02 | txy
    ok了,謝謝!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-12-10 10:55 | aaa
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2008-12-10 11:05 | aaa
    你好!我也是按你說的方法這樣用的:
    <%@page contentType="text/html; charset=UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
    <html>
    <head>
    <title>Hello World</title>
    </head>
    <body>
    <s:include value="LangSelector.jsp"/>
    <h2><s:text name="HelloWorld"/></h2>
    開始運(yùn)行時(shí)初始頁(yè)面是對(duì)的,但為什么選擇下拉菜單后沒有變化?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-01-21 15:34 | 胡炯
    我不知道怎么用你說的那個(gè)插件來進(jìn)行轉(zhuǎn)碼???謝謝   回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-03-26 02:22 | this
    @tf
    字符編碼錯(cuò)了  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-04-09 01:20 | hoist
    寫的很好,要點(diǎn)突出  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-04-12 10:11 | 舞命小丟
    好文章啊!正需要呢  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2009-04-15 16:37 | wind
    推 看了你的這篇文章,又更了解 struts2了  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-04-17 20:12 | 創(chuàng)意產(chǎn)品網(wǎng)
    不錯(cuò),學(xué)習(xí)了。  回復(fù)  更多評(píng)論
      
    # 看帖要回帖 2009-04-24 17:09 | 保密
    怎么所有的都一樣 沒有特色……  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-05-02 10:38 | hoist
    假如要?jiǎng)討B(tài)進(jìn)行國(guó)際化,比如一篇文章要多個(gè)語(yǔ)言版本,要同時(shí)有數(shù)據(jù)庫(kù)支持,可能比較麻煩吧?  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-05-20 14:56 | 服裝批發(fā)
    謝謝分享  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-05-22 01:02 | sadfdf
    很想 研究國(guó)際化 但是老是沒興趣  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-06-18 11:01 | 西
    挺厲害的 定一個(gè)  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2009-09-14 19:16 | 金屬咆哮
    大哥偶想通過JSP頁(yè)面直接訪問,而不是通過ACTION訪問,能這樣實(shí)現(xiàn)嗎?
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2011-06-07 18:00 | 地球乞丐
    很好,謝謝您的無(wú)私奉獻(xiàn)!  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2011-06-07 18:01 | 地球乞丐
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2011-07-25 09:51 | yanqing
    第二個(gè)例子,怎么瀏覽器中什么也沒有,也是按你的例子那樣弄得,不知道哪兒錯(cuò)了。不過,那個(gè)HelloWorld好像沒賦值吧,怎么取出來的那個(gè)值  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2011-08-15 10:22 | test
    @bird
    工具--》internate選項(xiàng)--》語(yǔ)言  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序[未登錄] 2011-09-28 14:01 | hunter
    812866605@qq.com 求一份源碼,謝謝啦  回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2011-12-29 15:21 | 幸運(yùn)皮
    謝謝樓主分享,謝謝指點(diǎn)思路.  回復(fù)  更多評(píng)論
      
    # 關(guān)于中文亂碼的問題 2012-09-14 17:18 | alexie
    今天按照例子做了下,發(fā)現(xiàn)當(dāng)瀏覽器用中文的時(shí)候,會(huì)出現(xiàn)亂碼,上面的文章中也沒有介紹方法,搜了下可以參考下面的:
    ==========================
    解決的方法(如果沒有安插件的話):
    在你安裝的jdk里找到native2ascii.exe這個(gè)可執(zhí)行文件,打開,然后把你要顯示的中文字粘貼到里面,點(diǎn)回車,會(huì)出來一串字符,再把這串字符輸入到globalMessages_zh_CN.properties這個(gè)文件里就可以了
      回復(fù)  更多評(píng)論
      
    # re: 在Struts 2.0中國(guó)際化(i18n)您的應(yīng)用程序 2012-12-26 16:01 | zhb
    你好 messiiiii,使用了struts2的國(guó)際化,項(xiàng)目發(fā)布運(yùn)行后,大約是在session失效的時(shí)間過后,切換中文(給request_locale賦值:zh_CN)的時(shí)候無(wú)法得到中文,頁(yè)面顯示了資源文件中的key值,但其他語(yǔ)言是正常的,請(qǐng)問這是什么原因呢?  回復(fù)  更多評(píng)論
      
    評(píng)論共2頁(yè): 1 2 下一頁(yè) 
    主站蜘蛛池模板: 牛牛在线精品观看免费正| 日韩在线视频免费看| 亚洲日本乱码在线观看| 国产成人亚洲精品无码AV大片| 午夜性色一区二区三区免费不卡视频 | 亚洲成A∨人片在线观看无码| 毛片在线播放免费观看| 国产成人精品日本亚洲专区61| 特级毛片免费播放| 国产精品视频免费一区二区三区| 国产成人亚洲综合网站不卡| 国产一卡二卡3卡四卡免费| 亚洲成人免费电影| 日本最新免费网站| 亚洲欧洲精品一区二区三区| 无码人妻AV免费一区二区三区| 亚洲精品无码久久久久| 在线看片免费人成视频久网下载| 久久久久亚洲AV无码专区桃色 | 无码专区AAAAAA免费视频| 亚洲人成亚洲人成在线观看| 国产99久久久国产精免费| 亚洲人成色77777在线观看大| 日本一区二区三区在线视频观看免费| 免费又黄又硬又爽大片| 免费无码午夜福利片69| 亚洲精品岛国片在线观看| 一级特级aaaa毛片免费观看| 亚洲天堂免费在线视频| 国产精品青草视频免费播放| 在线观看亚洲天天一三视| 国产一级a毛一级a看免费人娇| 亚洲精品无码专区久久久| 久草免费手机视频| 亚洲精品高清国产麻豆专区| 青青视频观看免费99| 亚洲偷偷自拍高清| 国产精品冒白浆免费视频| 日韩在线视频线视频免费网站| 亚洲日韩中文在线精品第一| 成人自慰女黄网站免费大全|