程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java的Struts框架中設置裝備擺設國際化的資本存儲的要點解析

Java的Struts框架中設置裝備擺設國際化的資本存儲的要點解析

編輯:關於JAVA

Java的Struts框架中設置裝備擺設國際化的資本存儲的要點解析。本站提示廣大學習愛好者:(Java的Struts框架中設置裝備擺設國際化的資本存儲的要點解析)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的Struts框架中設置裝備擺設國際化的資本存儲的要點解析正文


1、資本文件定名

國際化資本文件定名格局以下:

basename_language_country.properties 
basename_language.properties 
basename.properties 

個中basename為資本文件的根本稱號,language和country必需是java支撐的說話和國度。獲得java支撐的說話和國度代碼以下:

Locale[] locales = Locale.getAvailableLocales();
    for(Locale locale:locales){
      System.out.println("country:" + locale.getCountry() + ",language:" + locale.getLanguage());
    }

2、資本文件的設置裝備擺設和獲得

新建資本文件,在中文情況下,資本文件中的value值須要停止ascii轉換,可以經由過程運轉後輸出native2ascii停止轉換,別的本文中應用了eclipse的屬性文件插件,是以直接顯示為中文。屬性文件設置裝備擺設以下:
info_en_US.properties

username=zhangsan

info_zh_CN.properties

username=張三

info_zh.properties

username=李四
password=lisi

info.properties

username=王五
password=wangwu
email=郵箱

別的,假如須要讀取到屬性文件中的值,須要在struts-config.xml文件中設置裝備擺設常量。

<!-- 應用資本文件稱號 ,個中value值代表資本文件的baseName-->
  <constant name="struts.custom.i18n.resources" value="info"></constant>

頁面獲得資本文件的方法為經由過程struts標簽<s:text/>,以下所示:

  <!-- 資本文件獲得key值 -->
  <s:text name="username"/>
  <s:text name="password"/>
  <s:text name="email"/>

別的,假如在form表單中獲得key值,方法以下:

<!--個中key值為資本文件中的key值,感化是為輸出框添加label稱號,和label的屬性值一樣。然則在常量中會招致key值不克不及夠附屬性文件獲得對應的value-->
<s:textfield name="login.username" key="username"></s:textfield>

另請留意在常量<constant name="struts.ui.theme" value="simple"/>應用時會招致<s:textfield/>中的key值不克不及夠附屬性文件獲得對應的value。
最初頁面顯示成果以下:

從以上的設置裝備擺設文件中可以看出這三個值的取值起源,由此可以看出,資本文件的搜刮次序以下:
先從basename_language_country.properties中尋覓相干的key值,沒有則尋覓basename_language.properties中尋覓相干的key值,沒有則到basename.properties中尋覓相干的key值,沒有則顯示為name的值。

3、屬性文件中占位符的應用

屬性文件設置裝備擺設內容以下:

username=張三,{0},{1}

在jsp中應用標簽<s:param>值</s:param>停止參數的傳遞。

<s:text name="username">
  <s:param>你好</s:param>
  <s:param>迎接你!</s:param>
</s:text>

4、action中運用資本文件

在action中應用資本文件,須要繼續ActionSupport類,ActionSupport類完成了TextProvider, LocaleProvider這兩個接口,個中TextProvider供給了獲得資本文件值的辦法getText()辦法,而LocaleProvider接口只要一個getLocale()辦法,用來獲得Locale。
修正設置裝備擺設文件info_zh_CN.properties:

username=張三,{0},{1}
usernameError=用戶稱號不克不及為空!請確認!

在action中,獲得屬性文件辦法以下:

this.getText("usernameError");

在action中應用占位符停止操作,代碼以下:

this.getText("username", new String[]{"你好","迎接你"});

5、包規模的資本文件

處於該包和子包下的action都能拜訪到該資本文件,放置地位為某個包上面,定名格局為:package_language_country.properties。個中package為固定格局。設置裝備擺設文件package_zh_CN.properties以下:

username=包規模下的username

在包上面的action中可使用getText(“username”)的方法獲得。

6、action規模的資本文件

可認為某個零丁的action指定一個屬性文件,放置地位為某個action同級目次下。定名格局為

ActionName_language_country.properties


設置裝備擺設action規模的屬性文件:

username=action規模內的username

action中異樣應用getText(“username”)辦法停止獲得值。

7、資本文件的加載次序

關於action的應用getText(key)值來講,當同時存在action規模內的屬性文件、包規模內的屬性文件和全局屬性文件時,加載次序以下:
起首,在指定action內的屬性文件能否存在key值,假如存在,則取值,假如不存在,則查找以後action上一級包中能否存在指定key值的包規模屬性文件,不存在則持續上一級包中尋覓,假如一向沒有找到,則在全局的屬性文件中尋覓能否存在指定key值。假如存在指定的key值,則掏出key值對應的value值,假如不存在,則默許為key值。
別的,當全局屬性文件,有多個資本文件時,須要依照basename_language_country、basename_language、basename的次序停止尋覓。

8、頁面獲得資本文件

(1)應用<s:i18n/>拜訪某個資本文件。
代碼以下:

  <!-- 應用i18n標簽獲得屬性文件 -->
  <!-- 獲得包規模下的資本文件 -->
  <s:i18n name="com/struts/package">
    <s:text name="username"></s:text>
  </s:i18n>
  <!-- 獲得action規模下的資本文件 -->
  <s:i18n name="com/struts/service/LoginService">
    <s:text name="username"></s:text>
  </s:i18n>

(2)<fmt/>的應用
JSTL中包括了國際化和格局化標簽,應用國際化標簽可讓一個jsp頁面可以依據拜訪者地點的區域輸入分歧說話的頁面表述。在此須要應用Maven添加依附jar包。設置裝備擺設文件以下:

 <!-- 引入jstl標簽庫 -->
  <dependency>
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

在jsp頁面應用fmt標簽,運用代碼以下:

<!-- 應用jstl標簽fmt -->
  <!-- 設置說話情況,會籠罩客戶端傳遞的牢騷 -->
  <fmt:setLocale value="zh_CN" scope="request"/>
  <!-- 裝載一個資本集,並保留在EL變量中 ,basename為根本稱號,假如為包規模下則為com.struts.package,action規模下為com.struts.service.LoginService-->
  <fmt:setBundle basename="info" scope="request" var="baseName"/>
  <fmt:message key="username" bundle="${baseName }">
    <!-- 占位符的傳遞參數 -->
    <fmt:param value="您好"/>
    <fmt:param value="迎接"/>
  </fmt:message><br/>
  <!--fmt:bundle 設置一個只在標簽體內的拜訪的資本集 -->
  <!-- package規模下的資本文件 -->
  <fmt:bundle basename="com.struts.package">
    <fmt:message key="username"/>
  </fmt:bundle>
  <!-- action規模下的資本文件 -->
  <fmt:bundle basename="com.struts.service.LoginService">
    <fmt:message key="username"/>
  </fmt:bundle>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved