posts - 27,  comments - 14,  trackbacks - 0
          項目中為方便用戶在添加上傳文件時選擇自己想要保存到的文件夾,著手寫了一個程序實現遍歷數據庫中所有的文件夾而形成有層次感的下拉列表,涉及到的代碼基本如下:
          首先介紹下表結構:
          必須有的字段有:folderId, parentFolderId, folderName
              /**
               * 用于形成菜單式下拉列表的字符串拼接方法
               * 
               * 
          @param wpFolderId 文件夾ID
               * 
          @param groupId    社區ID
               * 
          @param menuList   返回的菜單式下拉列表的拼接List
               * 
          @param str        用來區分不同級的文件夾的靜態字符串
               * 
          @return
               * 
          @throws SystemException
               
          */

              
          public static List getFolderMenu(long wpFolderId, long groupId, List menuList, String str) 
                      
          throws SystemException{
                  
                  
          //首先查出第一級的所有文件夾對象
                  List rootList=LogFolderLocalServiceUtil.getFolders(groupId, wpFolderId);
                  
                  
          //定義一個空的日志文件夾對象
                  LogFolder logFolder = null;

                  
          //循環處理用于頁面顯示的文件夾名稱列表
                  for(int i=0;i<rootList.size();i++){
                      logFolder
          =(LogFolder)rootList.get(i);

                      
          //設置文件夾名稱為:文件夾名稱加一靜態字符串(初始為空)
                      logFolder.setWpFolderName(str+logFolder.getWpFolderName());

                      
          //往List里面添加數據對象
                      menuList.add(logFolder);
                      
                      
          //取得下一級文件夾的文件夾ID(也即將當前文件夾的ID作為下一級文件夾的父文件夾ID)
                      long subWpFolderId=((LogFolder)rootList.get(i)).getWpFolderId();
                      
                      
          //如果有下一級文件夾則遞歸調用該方法實現遍歷所有文件夾
                      getFolderMenu(subWpFolderId,groupId,menuList,str+"&nbsp;&nbsp;&nbsp;&nbsp;");
                      
                  }

                  
                  
          return menuList;
              }

          在Action中通過調用此業務方法,得到最終拼接好的String串List,通過req.setAttribute("folderList", list); 在頁面上將此List取出進行循環讀出,則可以產生出菜單式的列表,JSP代碼如下:
           1<tr>
           2    <td>
           3        <liferay-ui:message key="日志文件夾選擇" />
           4    </td>
           5    <td>
           6        <select name="<portlet:namespace />selFolderId">
           7            <option value=""></option>
           8
           9            <%
          10            for (int i = 0; i < FList.size(); i++) {
          11            LogFolder mt = (LogFolder)FList.get(i);    
          12            
          %>
          13
          14                <option <%= selFolderId == String.valueOf(mt.getWpFolderId()) ? "selected" : "" %> value="<%= String.valueOf(mt.getWpFolderId()) %>"><%= mt.getWpFolderName() %></option>
          15
          16            <%
          17            }
          18            
          %>
          19
          20        </select>
          21    </td>
          22</tr>

          我這是在一個Liferay項目中代碼,在其他Web開發中應該方法類似,如果表結構相似,改起來應該比較方便。有任何疑問可以留言交流,包括Liferay技術。
          posted on 2007-07-19 17:34 Scott.Pan 閱讀(693) 評論(0)  編輯  收藏 所屬分類: Liferay
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 铁力市| 洮南市| 晋城| 呼伦贝尔市| 册亨县| 台东县| 靖西县| 新营市| 铅山县| 江西省| 八宿县| 台山市| 射洪县| 海淀区| 新密市| 称多县| 松滋市| 武功县| 万全县| 五莲县| 九江市| 揭东县| 奇台县| 阿图什市| 进贤县| 嘉荫县| 两当县| 和静县| 饶平县| 彭泽县| 民勤县| 涪陵区| 榆社县| 天水市| 哈巴河县| 政和县| 潜山县| 江山市| 隆昌县| 南开区| 溧阳市|