隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827218
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          文章出處:http://blog.csdn.net/shrek_xu/archive/2006/06/01/767885.aspx

          最近因為項目需要,所以想把原來使用的displaytag1.0升級為displaytag1.1,其實升級的原因很簡單,1.0實在是太傻了,每次分頁還需要將所有數據一次載入,效率低到無法忍受:)

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

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

          /**
           * PaginatedListImpl
           * User: shrek_xu
           * Date: 2006-5-30
           * Time: 20:35:18
           *
           * 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>

          最開始我對每次都要傳入總共有多少條數據表示疑問,認為這個沒有必要,只需要第一次傳入就可以了,但是后來仔細想想,因為整個分頁過程是動態的,所以,很有可能在你翻頁的同時,原來的數據已經發生了變化,所以每次傳入總數目是很有必要的

          如果大家需要轉載,請你也附上此文連接



          posted on 2007-11-14 19:55 Ke 閱讀(443) 評論(0)  編輯  收藏 所屬分類: tag
          主站蜘蛛池模板: 凌海市| 汾阳市| 富阳市| 桓台县| 漠河县| 那坡县| 凌源市| 搜索| 拉萨市| 湟中县| 安徽省| 泸溪县| 察隅县| 探索| 瓦房店市| 南乐县| 万源市| 津市市| 泸州市| 茌平县| 鄄城县| 新沂市| 漠河县| 平顺县| 澄江县| 临桂县| 湘乡市| 皮山县| 揭西县| 阿拉善盟| 林西县| 龙山县| 晋城| 南城县| 永德县| 银川市| 肇州县| 长泰县| 丹巴县| 柳江县| 榕江县|