これはStrutsのローカリゼーションの例で、指定した言語でメッセージまたはコンテンツベースを表示します。既定では、Strutsは、各ユーザーのLocale属性をセッションコンテキストのキー ”
org.apache.struts.action.LOCALE
“の下に格納します。このセッション属性を使用するだけで済みます。
このStrutsローカリゼーションの例をダウンロードする –
Struts-Localization-Example.zip
1.プロジェクトの構成
これがプロジェクトの構造です。
2.プロパティファイル
すべてのローカライズ・メッセージは、プロパティ・ファイルで宣言され、形式は「
filename
locale
code.properties
」です。
Java.Util.Locale
クラスでロケールコードを確認できます。例えば
#error message error.common.username.required = Username is required error.common.password.required = Password is required #label message label.common.message = localization example label.common.username = Username label.common.password = Password label.common.button.submit = Submit
-
Common__de.properties **
#error message error.common.username.required = Benutzername ist erforderlich error.common.password.required = Passwort ist erforderlich #label message label.common.message = Lokalisierung Beispiel label.common.username = Benutzername label.common.password = Kennwort label.common.button.submit = Einreichen
3.アクションクラス
複数アクションの目的でDispatchActionを継承するアクションクラスを作成します。
package com.mkyong.common.action; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.Globals; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; public class LanguageSelectAction extends DispatchAction{ public ActionForward chinese(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.getSession().setAttribute( Globals.LOCALE__KEY, Locale.SIMPLIFIED__CHINESE); return mapping.findForward("success"); } public ActionForward english(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.getSession().setAttribute( Globals.LOCALE__KEY, Locale.ENGLISH); return mapping.findForward("success"); } public ActionForward german(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.getSession().setAttribute( Globals.LOCALE__KEY, Locale.GERMAN); return mapping.findForward("success"); } public ActionForward france(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.getSession().setAttribute( Globals.LOCALE__KEY, Locale.FRANCE); return mapping.findForward("success"); } }
4.アクションフォーム
ユーザー名とパスワードのデータを保持するアクションフォームを作成し、フォームの検証にも使用します。
package com.mkyong.common.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; public class UserForm extends ActionForm{ String username; String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if( getUsername() == null || ("".equals(getUsername()))) { errors.add("common.username.err", new ActionMessage("error.common.username.required")); } if( getPassword() == null || ("".equals(getPassword()))) { errors.add("common.password.err", new ActionMessage("error.common.password.required")); } return errors; } @Override public void reset(ActionMapping mapping, HttpServletRequest request) { //reset properties username = ""; password = ""; } }
5. JSP
JSPページを作成して、言語選択、フォーム値、およびエラー・メッセージを表示します。 ”
/Locale.do?method = chinese
“はDispatchAction
chinese()
メソッドと一致します。
: :
6. struts-config.xml
それをまとめてください。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://jakarta.apache.org/struts/dtds/struts-config__1__3.dtd"> <struts-config> <form-beans> <form-bean name="userForm" type="com.mkyong.common.form.UserForm"/> </form-beans> <action-mappings> <action path="/LoginPage" type="org.apache.struts.actions.ForwardAction" parameter="/pages/multi-language.jsp"/> <action path="/Submit" type="com.mkyong.common.action.LanguageSelectAction" name="userForm" validate="true" input="/pages/multi-language.jsp" > <forward name="success" path="/pages/multi-language.jsp"/> </action> <action path="/Locale" type="com.mkyong.common.action.LanguageSelectAction" name="userForm" parameter="method" validate="false" > <forward name="success" path="/pages/multi-language.jsp"/> </action> </action-mappings> <message-resources parameter="com.mkyong.common.properties.Common"/> </struts-config>
7. wel.xml
Web配置記述子ファイルにStrutsフレームワークを統合する。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app__2__3.dtd" > <web-app> <display-name>Maven Struts Examples</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>** .do</url-pattern> </servlet-mapping> </web-app>
スクリーンショット
言語リンクを使用してインタフェースを変更することができます。
-
英語のインターフェイス**
-
中国のインターフェイス**
-
フランスのインタフェース**
-
ドイツのインタフェース**