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
          主站蜘蛛池模板: 延安市| 望江县| 馆陶县| 迁安市| 垦利县| 扎鲁特旗| 延津县| 昭平县| 金山区| 蒙自县| 霍城县| 东莞市| 特克斯县| 保亭| 讷河市| 北票市| 曲麻莱县| 余干县| 石狮市| 威远县| 资兴市| 浮山县| 凤山市| 从化市| 如皋市| 琼中| 监利县| 陇西县| 泗阳县| 江北区| 满城县| 台前县| 南川市| 游戏| 邹平县| 平江县| 息烽县| 水富县| 湟中县| 福贡县| 叙永县|