posts - 1,  comments - 0,  trackbacks - 0

                                                            學習DispalyTag1.1分頁

                   1.1版最大的改進可以說是終于支持了大家期待以久的分次加載功能了,想顯示多少數據就載入多少數據.1.1版本支持兩種方式的分頁,第一種是實現其org.displaytag.pagination.PaginatedList 接口,第二種是在頁面和后臺同時做修改來實現分頁功能.在網上關于第二種分頁的使用方法介紹的非常多,而且官方文檔上面寫的也比較詳細,所以在這里我主要介紹自己是如何使用第一種方式進行分頁的,且這種方式也是官方推薦分頁方式

          給出 org.displaytag.pagination.PaginatedList接口原代碼如下


          package org.displaytag.pagination;

          import java.util.List;
          import org.displaytag.properties.SortOrderEnum;

          public interface PaginatedList
          {

              
          public abstract List getList();

              
          public abstract int getPageNumber();

              
          public abstract int getObjectsPerPage();

              
          public abstract int getFullListSize();

              
          public abstract String getSortCriterion();

              
          public abstract SortOrderEnum getSortDirection();

              
          public abstract String getSearchId();
          }



          首先寫一個此接口的實現類

          /**
           * PaginatedListImpl
           * totalNum 所有條目數目
           * currentPage 當前所在頁號
           * objectsPerPage 每頁顯示條數
           * list 此頁所需要顯示的數據
           
          */

          public class PaginatedListHelper implements PaginatedList{
              
          private List list;
              
          private int pageNumber = 1;
              
          private int objectsPerPage = 20;
              
          private int fullListSize = 0;
              
          private String sortCriterion;
              
          private SortOrderEnum sortDirection;
              
          private String searchId;

              
          public List getList() {
                  
          return list;
              }


              
          public void setList(List list) {
                  
          this.list = list;
              }


              
          public int getPageNumber() {
                  
          return pageNumber;
              }


              
          public void setPageNumber(int pageNumber) {
                  
          this.pageNumber = pageNumber;
              }


              
          public int getObjectsPerPage() {
                  
          return objectsPerPage;
              }


              
          public void setObjectsPerPage(int objectsPerPage) {
                  
          this.objectsPerPage = objectsPerPage;
              }


              
          public int getFullListSize() {
                  
          return fullListSize;
              }


              
          public void setFullListSize(int fullListSize) {
                  
          this.fullListSize = fullListSize;
              }


              
          public String getSortCriterion() {
                  
          return sortCriterion;
              }


              
          public void setSortCriterion(String sortCriterion) {
                  
          this.sortCriterion = sortCriterion;
              }


              
          public SortOrderEnum getSortDirection() {
                  
          return sortDirection;
              }


              
          public void setSortDirection(SortOrderEnum sortDirection) {
                  
          this.sortDirection = sortDirection;
              }


              
          public String getSearchId() {
                  
          return searchId;
              }


              
          public void setSearchId(String searchId) {
                  
          this.searchId = searchId;
              }


          }

           

          然后在使用的時候只需要創建此類的一個實例,且將所需要的參數通過set方法賦值進去就可以了.下面的代碼片段一般處于業務邏輯層.當然還可進行封裝.

           

           int page;

          /*
           *其中request中的page參數為displaytag中的默認當前頁數,當然也可以使用*TableTagParameters.SORT_AMOUNT_PAGE來表示當前頁數
           
          */

           
          if(request.getParameter("page")!=null && !"".equals(request.getParameter("page"))){
                   page
          =Integer.parseInt(request.getParameter("page"));
            }
          else{
                   page
          =1;
            }

          PaginatedList paginaredList
          =new PaginatedListHelper();

           paginaredList.setPageNumber(page);

          // 此頁要顯示的list數據

          List list
          =.;

          paginaredList.setList(list);

          // 總共有多少數據,他會根據所有數目和每頁數目自動統計頁數

          paginaredList.setFullListSize();

          // 如果你只設定這幾個參數,那么其余的參數將會默認為你實現類中所賦的初值

          最后,你還需要將這個實例放入到request或session中去,好讓displaytag知道這個是外部分頁

          request.setAttribute(
          "pageList",paginaredList);

          在前臺只需象下面這樣寫就可以了

          <display:table name="${pageList}" id="list" requestURI="">

               
          <display:column property="id"/>

          </display:table>

           

          因為整個分頁過程是動態的,所以,很有可能在你翻頁的同時,原來的數據已經發生了變化,所以每次傳入總數目是很有必要的(070412).

          posted on 2007-04-13 06:30 Jorny.R 閱讀(102) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          •  

          最新評論

          風瑟瑟,燈火欄柵;
          主站蜘蛛池模板: 桐乡市| 怀远县| 正镶白旗| 阳谷县| 昌宁县| 册亨县| 金山区| 喜德县| 新巴尔虎左旗| 珲春市| 西林县| 灌南县| 东兴市| 汉中市| 苍梧县| 巫山县| 高尔夫| 临颍县| 襄城县| 康保县| 桐庐县| 介休市| 兴海县| 平凉市| 镇康县| 浮梁县| 偏关县| 双牌县| 松原市| 吉隆县| 枞阳县| 珠海市| 白城市| 长乐市| 乌兰县| 佳木斯市| 西乌珠穆沁旗| 泗洪县| 金坛市| 霍山县| 延津县|