Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2本地化和國際化

Struts 2的國際化(I18N)和本地化(i10n)或多語言的例子,來說明如何使用資源包來顯示不同語言的消息。在這個例子中,您將創建一個簡單的登錄屏幕,通過Struts 2的UI組件顯示來自資源包的消息, 並更改基於所選的語言選項的語言環境。

1. 工程結構

項目結構,如下圖片顯示:

Struts2本地化和國際化

2. Properties文件

確保屬性文件命名爲國家指定的代碼。

在一些「非歐洲」或「非英語」之類的字符,應該始終編碼的內容 native2ascii屬性

global.properties

#Global messages
global.username = Username
global.password = Password
global.submit = Submit

global_zh_CN.properties

#Global messages
global.username = \u7528\u6237\u540d
global.password = \u5bc6\u7801
global.submit=\u63d0\u4ea4

global_fr.properties

#Global messages
global.username = Nom d'utilisateur
global.password = Mot de passe
global.submit = Soumettre

global_de.properties

#Global messages
global.username = Benutzername
global.password = Kennwort
global.submit = Einreichen 

請仔細閱讀Struts2資源包的例子來了解Struts 2的自動搜索屬性文件。

3. 動作類

兩個動作類,LocaleAction基本上是什麼都不做, 而 LoginAction 會做一個簡單的驗證和通過gettext()顯示來自資源包錯誤信息。

LocaleAction.java

package com.yiibai.common.action;

import com.opensymphony.xwork2.ActionSupport;

public class LocaleAction extends ActionSupport{

//business logic
public String execute() {
    return "SUCCESS";
}

}

LoginAction.java

package com.yiibai.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

private String username;
private String password;

//...getter and setter methods

//business logic
public String execute() {
    return "SUCCESS";
}

//simple validation
public void validate(){
    if("".equals(getUsername())){
        addFieldError("username", getText("username.required"));
    }
    if("".equals(getPassword())){
        addFieldError("password", getText("password.required"));
    }
}

}

4. 視圖頁面

一個登錄頁面帶有一個文本框,密碼和提交UI組件。

爲了支持Struts2 本地化,必須聲明 <%@ page contentType=」text/html;charset=UTF-8″ %>在您的視圖頁面,否則能將有問題的「UTF-8數據」正確顯示,尤其是中國漢字。閱讀這篇文章,關於Struts2中國本土化問題。

login.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

Struts 2 localization example

<s:form action="validateUser" namespace="/user">

<s:textfield key="global.username" name="username" />
<s:password key="global.password" name="password"/>    
<s:submit key="global.submit" name="submit" />

<s:url id="localeEN" namespace="/" action="locale" >
<s:param name="request_locale" >en

<s:url id="localezhCN" namespace="/" action="locale" >
<s:param name="request_locale" >zh_CN

<s:url id="localeDE" namespace="/" action="locale" >
<s:param name="request_locale" >de

<s:url id="localeFR" namespace="/" action="locale" >
<s:param name="request_locale" >fr

<s:a href="%{localeEN}" >English
<s:a href="%{localezhCN}" >Chinese
<s:a href="%{localeDE}" >German
<s:a href="%{localeFR}" >France

 

要更改默認的語言環境,只需要聲明「request_locale」參數,設置你喜歡的語言代碼,並傳遞給一個Action類。在 Struts2中,com.opensymphony.xwork2.interceptor.I18nInterceptor 攔截器, 在 struts-default.xml中聲明將攔截Action類,並相應地處理語言環境。

5. 顯示資源包的消息?

在Struts2,有很多的方式來顯示所選擇的語言或語言環境的資源包的信息。有關示例,

<s:textfield key="global.username" name="username" />
<s:text name="global.username" />
<s:property value="getText('global.username')" />
<s:text name="global.password" /> 

在Struts1,有一個標準的 bean:message 來顯示資源包的消息。但是在Struts 2中,有這麼多相當於顯示資源包的消息(甚至內部的工作不同)方式,基本上,無論選擇的是什麼,在 Struts2 也將顯示正確的資源包的消息。

6. struts.xml

Struts2 的配置文件,鏈接一起。

<constant name="struts.custom.i18n.resources" value="global" />
 <constant name="struts.devMode" value="true" />

<package name="user" namespace="/user" extends="struts-default">
   <action name="login">
    <result>/pages/login.jsp</result>
   </action>
   <action name="validateUser" class="com.yiibai.user.action.LoginAction">
    <result name="SUCCESS">/pages/welcome.jsp</result>
    <result name="input">/pages/login.jsp</result>
   </action>
</package>

<package name="default" namespace="/" extends="struts-default">
   <action name="locale" class="com.yiibai.common.action.LocaleAction">
    <result name="SUCCESS">/user/pages/login.jsp</result>
   </action>
</package>

7. 示例

http://localhost:8080/i18nlocalization/user/login.action

Struts2本地化和國際化

http://localhost:8080/i18nlocalization/locale.action?request\_locale=en

Struts2本地化和國際化

http://localhost:8080/i18nlocalization/locale.action?request\_locale=zh\_CN

Struts2本地化和國際化

http://localhost:8080/i18nlocalization/locale.action?request\_locale=de

Struts2本地化和國際化

http://localhost:8080/i18nlocalization/locale.action?request\_locale=fr

Struts2本地化和國際化

參考

  1. http://struts.apache.org/2.1.8/docs/localization.html
  2. http://www.yiibai.com/java/java-convert-chinese-character-to-unicode-with-native2ascii/
  3. http://www.yiibai.com/struts2/struts-2-resource-bundle-example/
  4. http://www.yiibai.com/struts/struts-internationalizing-or-localization-example/

代碼下載 - http://pan.baidu.com/s/1jGCUaJ8