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

