これはStrutsのローカリゼーションの例で、指定した言語でメッセージまたはコンテンツベースを表示します。既定では、Strutsは、各ユーザーのLocale属性をセッションコンテキストのキー ”

org.apache.struts.action.LOCALE

“の下に格納します。このセッション属性を使用するだけで済みます。

このStrutsローカリゼーションの例をダウンロードする –

Struts-Localization-Example.zip

1.プロジェクトの構成

これがプロジェクトの構造です。


Struts-localization-folder、title = "Struts-localization-folder"

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>

スクリーンショット

言語リンクを使用してインタフェースを変更することができます。

  • 英語のインターフェイス**


Struts-localization-english、title = "Struts-localization-english"

  • 中国のインターフェイス**


Struts-localization-chinese、title = "Struts-localization-chinese"

  • フランスのインタフェース**


Struts-localization-france、title = "Struts-localization-france"

  • ドイツのインタフェース**


Struts-localization-german、title = "Struts-localization-german"