Struts 21章 表示するTileの動的な変更
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つのページに表示するレイアウトに変えなさい。
- メニューは無くてよい。