电竞比分网-中国电竞赛事及体育赛事平台

分享

struts2.0國(guó)際化,JSP,action,參數(shù)國(guó)際化

 hh3755 2011-05-24

本文為轉(zhuǎn)載,原文:http://callan./blog/186014

每種框價(jià)都會(huì)有國(guó)際化的支持,struts2的國(guó)際化大致上分為頁(yè)面的國(guó)際化,Action的國(guó)際化以及xml的國(guó)際化

 

首先在struts.properties文件中加入以下內(nèi)容:
struts.custom.i18n.resources=messageResource
或在struts.xml中加入
<constant name="struts.custom.i18n.resources" value="messageResource"></constant>

 

資源文件的命名格式: 名稱_語(yǔ)言代碼_國(guó)家代碼. Properties
如果創(chuàng)建中文和英語(yǔ)國(guó)際化,那么資源文件名稱為
messageResource_zh_CN.properties和messageResource_en_US.properties

 

1. jsp頁(yè)面的國(guó)際化 
通過(guò)使用標(biāo)簽<s:text name="label.helloWorld"/>輸出國(guó)際化
label.helloWorld為資源文件中定義的key

 


  在messageResource_en_US.properties加入以下內(nèi)容
  label.hello=hello {0}
  label.helloWorld=hello,world

  在messageResource_zh_CN.properties加入以下內(nèi)容
  label.hello=你好 {0}
  label.helloWorld=你好,世界

 

(1). <s:text name="label.helloWorld"/>
<s:property value="%{getText('label.helloWorld')}"/>
上面兩個(gè)都為輸出一個(gè)hello word的兩種表示

 

<s:textfield name="name" key="label.helloWorld"/>
<s:textfield name="name" label="%{getText('label.helloWorld')}"/>
顯示一個(gè)文本框,文本框的標(biāo)題進(jìn)行國(guó)際化

 

(2). 使用<s:i18n>標(biāo)簽指定從某個(gè)特定的資源文件中取數(shù)據(jù)
<s:i18n name="messageResource">
    <s:text name="label.helloWorld"></s:text>
</s:i18n>
指定在從messageResource取資源

 

(3).
<s:text name="label.hello">
    <s:param>callan</s:param>
</s:text>
使用帶參數(shù)的資源.<s:param>可以替換label.hello=hello {0}中的{0}

 

2. Action的國(guó)際化
Action的國(guó)際化主要是通過(guò)getText(String key)方法實(shí)現(xiàn)的

Java代碼  收藏代碼
  1. public String execute() throws Exception {  
  2.   
  3.           
  4.   
  5.         // getText(String) string為key  
  6.   
  7.         String str1 = getText("label.helloWorld");  
  8.   
  9.         System.out.println(str1);  
  10.   
  11.           
  12.   
  13.         // 帶參數(shù)的  
  14.   
  15.         String str2 = getText("label.hello",new String[]{"fjf"});  
  16.   
  17.         System.out.println(str2);  
  18.   
  19.       
  20.   
  21.         // 與上一種實(shí)現(xiàn)一樣  
  22.   
  23.         List l = new ArrayList();  
  24.   
  25.         l.add("callan");  
  26.   
  27.         String str3 = getText("label.hello",l);  
  28.   
  29.         System.out.println(str3);  
  30.   
  31.           
  32.   
  33.         return SUCCESS;  
  34.   
  35.     }  

 

 3.  參數(shù)化國(guó)際化
在messageResource_en_US.properties加入以下內(nèi)容
userName=userName
userName.required=${getText('userName')} is required

 

在messageResource_zh_CN.properties加入以下內(nèi)容
userName=用戶名
userName.required=${getText('userName')} 不能為空

 

在Action中
String str4 = getText("userName.required");
System.out.println(str4);

 

userName.required=${getText('userName')}會(huì)取國(guó)際化的用戶名

 

4. 使用校驗(yàn)框價(jià)時(shí),提示信息可以國(guó)際化
   <field name="userName">
  <field-validator type="requiredstring">
   <message key=”userName.required”> </message>
  </field-validator>
 </field>

 


國(guó)際化資源文件分為三種級(jí)別
(1) 全局資源文件,可以被整個(gè)應(yīng)該程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
(2) 包級(jí)資源文件,每個(gè)包的根目錄下可以新建資源文件,僅被當(dāng)前包中的類訪問(wèn).文件名格式為:package_語(yǔ)言代碼_國(guó)家代碼.
(3) Action級(jí)資源文件,僅被當(dāng)前Action引用,名稱為action名_語(yǔ)言代碼_國(guó)家代碼
查找順序?yàn)閺男》秶酱蠓秶? Action級(jí)優(yōu)先級(jí)最大 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多