DispatchActionクラス(

org.apache.struts.actions.DispatchAction

)は、関連するすべての関数を単一のアクションクラスにグループ化する方法を提供します。それぞれの機能に対して別々のアクションクラスを作成することを避けるための便利なメカニズムです。

このStruts DispatchActionの例をダウンロードする –

Struts-DispatchAction-Example.zip

このメカニズムを実装するには、アクションクラスを

org.apache.struts.actions.DispatchAction

クラスに拡張する必要があります。このアクションクラスは、通常のアクションクラスのように

execute()

メソッドを実装する必要はありません。代わりに、DispatchActionクラスは着信要求パラメータ


method ** のメソッドベースを実行します。たとえば、パラメータが “method = chinese”の場合、chinese()メソッドが実行されます。


アクションクラスはDispatchActionを拡張し、ローカライゼーションのStrutsセッション属性にロケールを設定する4つのメソッドを含みます。

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");
    }

}

このStruts htmlタグはchinese()メソッドを実行します。


このStruts htmlタグはenglish()メソッドを実行します。


このStruts htmlタグはgerman()メソッドを実行します。


このStrutsのhtmlタグは、france()メソッドを実行します。