posts - 37, comments - 9, trackbacks - 0, articles - 0

          Struts menu的使用(動態數據)

          Posted on 2005-08-30 11:42 飛翔 閱讀(485) 評論(0)  編輯  收藏 所屬分類: JavaDataBase
           以下是我在實際項目中使用了struts-menu,現將他們寫出來已供參考
          1.
             拷貝必要的jar庫文件到dbMenu\WEB-INF\lib
          log4j-1.2.8.jar
          struts-menu-2.3.jar 
          拷貝menu-config.xml ,struts-menu.tld 到WEB-INF目錄下,
          及一些必須的圖片和jscript,css到相應的目錄
          Images/*.*       
          Scripts/    menuExpandable.js xtree.js
          Styles/     menuExpandable.css   global.css   xtree.css
          2.
          修改struts-config.xml 文件,增加如下部分
             <plug-in className="net.sf.navigator.menu.MenuPlugIn">
                
          <set-property property="menuConfig"
                  value
          ="/WEB-INF/menu-config.xml"/>
             
          plug-in>

          3.獲得數據,構造樹狀菜單:
            無論何種方法獲得數據(JDBC,HIBERNATE。。。),
              我們要構造的樹狀菜單需要2個必須元素: 1.顯示的名稱(name) 2.連接到的目標位置(location)
            TreeBuilder.java
          ===========================================================================

          /*
           * 創建日期 2005-8-6
           */
          import ....

          import net.sf.navigator.menu.MenuComponent;
          import net.sf.navigator.menu.MenuRepository;

          /**
           * @author yutengfei
           */
          public class TreeBuilder {
           protected final static Log log = LogFactory.getLog("TreeBuilder"); 
           public TreeBuilder() { }

           // 以下代碼生成樹結構,并以"treerepository"名儲存在session 中
             public static void initialTree(HttpServletRequest request, HttpServlet servlet){
            try {
             MenuRepository repository = new MenuRepository();
             ServletContext context = servlet.getServletContext()
             // Get the repository from the application scope - and copy the
             // DisplayerMappings from it.
             MenuRepository defaultRepository = (MenuRepository) context.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);

             repository.setDisplayers(defaultRepository.getDisplayers()); 

          //your code begin
          List tree = getTreeDataFromDataBase(); //
          // 產生從數據庫中獲得的數據列表(一個樹節點是一個NoteBean 對象) ,獲得數據的方法這里沒有提供
          for(Iterator it = tree.iterator();it.hasNext();)
          {
               MenuComponent mc = new MenuComponent();   //建立一個menu對象(樹節點),然后設置他的屬性
                      NoteBean row 
          =(NoteBean) it.next()

                      String name 
          = (String) row.getName()
          ;
                      mc.setName(name);  //設置顯示的節點名稱
                      String parent 
          = (String) row.getParentname()
          ;
                      System.
          out.println(name + ", parent is: " +
           parent);
                      
          if (parent != null
          ) {//存在“父”節點
                          MenuComponent parentMenu 
          =
           repository.getMenu(parent);
                          
          if (parentMenu == null
          ) {
                              System.
          out.println("parentMenu '" + parent + "' doesn't exist!"
          );
                              
          // create a temporary parentMenu

                              parentMenu = new MenuComponent();
                              parentMenu.setName(parent);
                              repository.addMenu(parentMenu);
                          }

                          mc.setParent(parentMenu);   //設置“父”節點
                      }
                      String title 
          = (String) row.getTitle()
          ;
                      mc.setTitle(title);
                      String location 
          = (String) row.getLocation()
          ;
                      mc.setLocation(location);
                      repository.addMenu(mc);
                  }
             
          request.getSession().setAttribute("treerepository", repository);   //整個樹結構儲存在session中
            } catch (Exception ex) {
             ex.printStackTrace();
            }

           }

          }

          4.前臺jsp顯示樹菜單

          <%try{%>
          <%
          if (session.getAttribute("treerepository") == null) {
          TreeBuilder?.initialTree(request, (HttpServlet) pageContext.getPage());
          ?}%>
          <%List list = new ArrayList();
          MenuRepository repository = (MenuRepository) session.getAttribute("treerepository");
          list = repository.getTopMenus();
          String name = "";%>


           <%for (Iterator it = list.iterator(); it.hasNext();) {
          ?name = ((MenuComponent) it.next()).getName();%>
           
           <%}%>

          <%}catch(Exception e){
          e.printStackTrace();
          }
          %>

          5 over



          飛翔 2005-08-30 11:42

          文章來源:http://ytfei.cnblogs.com/archive/2005/08/30/225943.html
          主站蜘蛛池模板: 毕节市| 东港市| 寿宁县| 安龙县| 乐山市| 凌海市| 长白| 德清县| 青铜峡市| 台安县| 汤原县| 奉化市| 亳州市| 闽清县| 永嘉县| 阳曲县| 海城市| 西贡区| 江口县| 九龙县| 长葛市| 内黄县| 东辽县| 洱源县| 达州市| 溧阳市| 二手房| 桂林市| 晋中市| 佛冈县| 普洱| 桐城市| 华宁县| 和龙市| 汨罗市| 威信县| 会理县| 得荣县| 蓬溪县| 稻城县| 东方市|