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 本地化/國際化(i18n)

國際化(i18n)是規劃和實施的產品和服務,使他們能很容易地適應特定的本地語言和文化的過程中,這個過程被稱爲本地化。國際化的過程有時也被稱爲翻譯或本地化啓用。國際化是縮寫i18n,因爲我和兩端用n字打頭,並有18個字符之間的第i個和最後n。

Struts2提供本地化,即,國際化(i18n)支持,通過資源包,攔截器和標籤庫在以下地方:

  • UI 標籤

  • 消息和錯誤

  • 動作類

資源包:

Struts2 使用資源包來提供Web應用程序的用戶多語言和區域選項。不必擔心在不同的語言編寫的網頁。所有必須做的是創造一個資源包爲每個想要的語言。資源包將包含標題,消息和其他文本的語言用戶。資源包的文件,該文件包含鍵/值對您的應用程序的默認語言。

簡單的命名格式的資源文件是:

bundlename_language_country.properties

這裏,軟件包可以ActionClass,接口,超類,型號,封裝,全球資源屬性。接下來的部分 language_country ,En_US的等在這裏,可以跳過這是可選的全國部分區域表示es_ES和英語(美國),西班牙語(西班牙)表示語言環境的語言環境,例如代表國家。 

當引用消息元素,其關鍵,按照下列順序進行相應的消息包的Struts框架搜索:

  • ActionClass.properties

  • Interface.properties

  • SuperClass.properties

  • model.properties

  • package.properties

  • struts.properties

  • global.properties

多語言開發應用程序,就必須保持相應的到那些語言/區域設置多個屬性文件定義的鍵/值對中的所有內容。例如,如果要開發應用程序(默認)爲美國英語,西班牙語,和法語就必須創建三個屬性文件。在這裏,我將使用只global.properties文件,你可以利用不同的屬性文件來隔離不同類型的消息。

  • global.properties: 默認情況下,英語(美國)將被應用

  • global_fr.properties: 這將是法語環境中使用。

  • global_es.properties: 這將被用於西班牙語言環境。

訪問消息:

有幾種方法可以訪問的信息資源,包括gettext的,文本標籤,UI標籤的關鍵屬性,國際化標籤。讓我們來看看他們簡單:

要顯示i18n的文本,使用的調用屬性標記gettext,或其他任何標記,例如UI標籤如下:

<s:property value="getText('some.key')" />

文本標記檢索從默認的資源包,即一個消息 struts.properties

<s:text name="some.key" />

i18n標籤推值棧上的任意資源束。 i18n標籤範圍內的其他標籤可以顯示該資源包的消息:

<s:i18n name="some.package.bundle"> <s:text name="some.key" />

大多數UI標籤的鍵屬性,可以用來檢索的消息,從一個資源包:

<s:textfield key="some.key" name="textfieldName"/>

Localization 例子:

創建的index.jsp從前一章到多種語言。相同的文件將被寫入,如下所示:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> Employee Form with Multilingual Support

<s:text name="global.heading"/>

<s:url id="indexEN" namespace="/" action="locale" > <s:param name="request_locale" >en <s:url id="indexES" namespace="/" action="locale" > <s:param name="request_locale" >es <s:url id="indexFR" namespace="/" action="locale" > <s:param name="request_locale" >fr <s:a href="%{indexEN}" >English <s:a href="%{indexES}" >Spanish <s:a href="%{indexFR}" >France <s:form action="empinfo" method="post" namespace="/"> <s:textfield name="name" key="global.name" size="20" /> <s:textfield name="age" key="global.age" size="20" /> <s:submit name="submit" key="global.submit" />

我們將創建的success.jsp文件,該文件將被調用的情況下定義的動作返回SUCCESS。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> Success <s:property value="getText('global.success')" />

在這裏,我們需要創建兩個動作。 (一)第一個動作一個Locale和照顧,用不同的語言顯示相同的index.jsp文件(二)另一項行動是爲了照顧提交表單本身。的動作都將返回SUCCESS,但我們會採取不同的動作,返回值的基礎上,因爲我們的目的是不同的兩個動作:

動作處理locale:

package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; public class Locale extends ActionSupport{ public String execute() { return SUCCESS; } }

提交表單處理動作:

package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; public class Employee extends ActionSupport{ private String name; private int age; public String execute() { return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

現在。讓我們創建以下三個global.properties文件放在CLASSPATH中:

GLOBAL.PROPERTIES:

global.name = Name global.age = Age global.submit = Submit global.heading = Select Locale global.success = Successfully authenticated

GLOBAL_FR.PROPERTIES:

global.name = Nom d'utilisateur
global.age = l'âge global.submit = Soumettre des global.heading = Sé lectionnez Local global.success = Authentifi é avec succès

GLOBAL_ES.PROPERTIES:

global.name = Nombre de usuario global.age = Edad global.submit = Presentar global.heading = seleccionar la configuracion regional global.success = Autenticado correctamente

我們將創建struts.xml中兩個動作如下:

<constant name="struts.devMode" value="true" /> <constant name="struts.custom.i18n.resources" value="global" /> <package name="helloworld" extends="struts-default" namespace="/"> <action name="empinfo" class="com.yiibai.struts2.Employee" method="execute"> <result name="input">/index.jsp <result name="success">/success.jsp <action name="locale" class="com.yiibai.struts2.Locale" method="execute"> <result name="success">/index.jsp

以下是web.xml文件中的內容:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app\_2\_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app\_3\_0.xsd" id="WebApp_ID" version="3.0"> Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*

現在,右鍵點擊項目名稱,並單擊 Export > WAR File創建一個WAR文件。然後部署此WAR在Tomcat的webapps目錄下。最後,啓動Tomcat服務器和嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會給出以下畫面:

English

現在選擇的任何一種語言,讓我們說,我們選擇西班牙語,這將顯示以下結果:

Spanish

您可以嘗試用法語。最後,讓我們嘗試點擊「Submit 」按鈕,當我們在西班牙語言,它會顯示以下畫面: 

Spanish

恭喜你,現在有一個多語種的網頁,可以在全球範圍內啓動您的網站。