目次へ

21.3. 表示するTileの動的な変更

サイトによっては、ユーザ毎に表示するTileを変えられるものがあります。これを実現するためには、これまでに説明したControllerやTilesActionを使用します。HttpServletRequestやHttpSessionを利用して、表示するTileの情報をControllerやTilesActionに渡し、その情報に応じてControllerやTilesActionは表示させるTileを決定します。以下にリクエストパラメータの値に応じて表示するTileを決定するControllerを示します。

...
public class ParameterMenuController implements Controller{
  public void perform(ComponentContext context, HttpServletRequest request,
                      HttpServletResponse response, ServletContext servletContext){
    int tiles=0;
    if(request.getParameter("tiles")!=null){
      tiles=Integer.parseInt(request.getParameter("tiles"));
    }

    // リストの作成
    List menuList=new ArrayList();
    SimpleMenuItem menu;
    if((tiles & 2)==2){
      menu=new SimpleMenuItem();
      menu.setLink("/WEB-INF/jsp/calendar.jsp");
      menu.setValue("カレンダー");
      menuList.add(menu);
    }
    if((tiles & 1)==1){
      menu=new SimpleMenuItem();
      menu.setLink("/WEB-INF/jsp/clock.jsp");
      menu.setValue("世界時計");
      menuList.add(menu);
    }

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

このControllerは、リストに追加するSimpleMenuItemを「tiles」パラメータによって決定しています。tilesパラメータの値の1ビット目に1が立っていたら1つ目のSimpleMenuItem、2ビット目に1が立っていたら2つ目のSimpleMenuItemを追加しています。

あとはJSPページでの処理に依存します。JSPページを工夫することにより、表示するTileが動的に切り替わるページを作成することができます。

(実習課題3)

実習課題1のWebアプリケーションを改良しなさい。

  • 「一覧の中からメニュー(Tile)として表示する項目を選択する機能」を追加すること。
  • メニュー(Tile)項目は、HttpSessionで管理すること。

解答例はこちら

(実習課題4)

実習課題3のWebアプリケーションを改良しなさい。

  • 選択したTileをまとめて1つのページに表示するレイアウトに変えなさい。
  • メニューは無くてよい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp