首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 1.x 系列教程(16):LocaleAction 零程式碼實現多語系切換

     編輯:Java 相關知識

前言

LocaleAction 是 Struts 內建的 final 類別,**無需撰寫任何 Java 程式碼**即可完成語系切換。僅需在 struts-config.xml 定義動態表單並配置 Action 映射。

兩步驟配置

1. 定義動態表單(含語系屬性)

<form-beans>
    <form-bean name="EnglishForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="language" type="java.lang.String" initial="en" />
        <form-property name="country" type="java.lang.String" initial="US" />
    </form-bean>
    <form-bean name="ChineseForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="language" type="java.lang.String" initial="zh" />
    </form-bean>
</form-beans>
  • 使用 DynaActionForm 免寫 Java 類別。
  • initial 設定預設語系/國家代碼。

2. 配置 LocaleAction 映射

<action-mappings>
    <action name="EnglishForm"
            path="/en"
            type="org.apache.struts.actions.LocaleAction">
        <forward name="success" path="/global.jsp" />
    </action>
    <action name="ChineseForm"
            path="/zh"
            type="org.apache.struts.actions.LocaleAction">
        <forward name="success" path="/global.jsp" />
    </action>
</action-mappings>
  • type 必須為 org.apache.struts.actions.LocaleAction。
  • **必須包含 name="success" 的 <forward>**,語系設定成功後導向此路徑。

運作原理

  1. 請求 /en.do 或 /zh.do。
  2. LocaleAction 讀取對應 FormBean 的 language、country 屬性。
  3. 建立 java.util.Locale 物件存入 Session(鍵 org.apache.struts.action.LOCALE)。
  4. 轉向 success 指定頁面(如 global.jsp)。
  5. 後續頁面透過 <bean:message> 自動依 Session Locale 選擇正確屬性檔。

測試

  • 中文頁:https://localhost:8080/samples/zh.do
  • 英文頁:https://localhost:8080/samples/en.do

優缺點

優點缺點
零程式碼,純配置每種語系需個別定義 FormBean 與 Action
自動管理 Session Locale無法動態決定語系(需預先配置好所有語系)
與 Struts 國際化機制無縫整合

總結

LocaleAction 為簡單多語系專案提供極致便利的宣告式解決方案。若需動態語系切換(如下拉選單選擇),請參考教程(13)的程式化 setLocale() 方式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved