目次へ

21.2. org.apache.struts.tiles.actions.TilesAction

Controllerを作成する2つ目の方法について説明します。2つ目の方法は、「org.apache.struts.tiles.actions.TilesAction」を利用する方法です。TilesActionは「org.apache.struts.action.Action」クラスを継承したクラスで、これによってActionクラスを作成する事ができます。開発者はまずTilesActionを継承したActionクラスを実装し、それを他のActionクラスと同じように、特定のURLで呼び出されるようにします。そしてTiles設定ファイルの関連付ける組み合わせで、作成したActionが動作するURLを指定します。Controllerの場合と同じように、Actionクラスが実行された直後、JSPページが表示される前にTilesActionを継承したActionクラスが実行されます。

例として、前節と同じ動作をするActionクラスを作成します。

package sample;

import org.apache.struts.tiles.actions.TilesAction;
import org.apache.struts.tiles.ComponentContext;
import org.apache.struts.tiles.beans.SimpleMenuItem;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.ArrayList;

public class MenuTilesAction extends TilesAction{
  public ActionForward execute(ComponentContext context, ActionMapping mapping,
                               ActionForm form, HttpServletRequest request,
                               HttpServletResponse response)
    throws Exception{
    // リストの作成
    List menuList=new ArrayList();
    SimpleMenuItem menu=new SimpleMenuItem();
    menu.setLink("/WEB-INF/jsp/calendar.jsp");
    menu.setValue("カレンダー");
    menuList.add(menu);
    menu=new SimpleMenuItem();
    menu.setLink("/WEB-INF/jsp/clock.jsp");
    menu.setValue("世界時計");
    menuList.add(menu);

    // リストの登録
    context.putAttribute("menuList", menuList);

    return(null);
  }
}

TilesActionで定義されているメソッドは幾つかありますが、ここで実装しなければならないものは、ComponentContextを引数にとるexecuteメソッドです。以下に定義を示します。

public ActionForward execute(ComponentContext context, ActionMapping, mapping,
                             ActionForm form, HttpServletRequest request,
                             HttpServletResponse response)
  throws Exception

引数の種類が変わっていますが、Controllerのperformと同じように使用できると考えて下さい。またActionForwardを返さなければなりませんが、nullを返すようにして下さい。nullを返さなかったとしてもその値は無視されます。サンプルのプログラムは、最後にnullを返していることを除けば、前節のControllerのサンプルと全く同じです。

最後にTiles設定ファイルでの、設定方法について説明します。TilesActionを関連付けるためには、関連付ける組み合わせに「controllerUrl」属性を定義します。先ほど作成したTilesActionが「/tilesAction.do」というURLにマッピングされているとすると、以下のようになります。

<definition name="tilesAction" path="/WEB-INF/jsp/layout.jsp"
            controllerUrl="/tilesAction.do">
  ...
</definition>

(実習課題2)

実習課題1と同じ挙動をするWebアプリケーションを、TilesActionを用いて作成しなさい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp