LocaleAction 是 Struts 內建的 final 類別,**無需撰寫任何 Java 程式碼**即可完成語系切換。僅需在 struts-config.xml 定義動態表單並配置 Action 映射。
<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 設定預設語系/國家代碼。<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>**,語系設定成功後導向此路徑。/en.do 或 /zh.do。LocaleAction 讀取對應 FormBean 的 language、country 屬性。java.util.Locale 物件存入 Session(鍵 org.apache.struts.action.LOCALE)。success 指定頁面(如 global.jsp)。<bean:message> 自動依 Session Locale 選擇正確屬性檔。https://localhost:8080/samples/zh.dohttps://localhost:8080/samples/en.do| 優點 | 缺點 |
|---|---|
| 零程式碼,純配置 | 每種語系需個別定義 FormBean 與 Action | 自動管理 Session Locale | 無法動態決定語系(需預先配置好所有語系) | 與 Struts 國際化機制無縫整合 |
LocaleAction 為簡單多語系專案提供極致便利的宣告式解決方案。若需動態語系切換(如下拉選單選擇),請參考教程(13)的程式化 setLocale() 方式。