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)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仲巴县| 长春市| 如皋市| 达尔| 沧源| 阿合奇县| 甘德县| 城市| 延川县| 西乌珠穆沁旗| 常宁市| 闽清县| 卢氏县| 桐乡市| 灵寿县| 信宜市| 孙吴县| 沙雅县| 晋江市| 保康县| 吉隆县| 佛教| 东台市| 新安县| 吉木萨尔县| 分宜县| 灵山县| 盐津县| 新巴尔虎右旗| 靖州| 宝鸡市| 奈曼旗| 廊坊市| 万荣县| 客服| 长武县| 吴川市| 婺源县| 沧州市| 临洮县| 万年县|