lizongbo 的 編程學習

          http://618119.com

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks

          在一篇blog里我在回復里寫了displaytag1.1大數據量分頁顯示的索引存在bug
           http://www.aygfsteel.com/zJun/archive/2006/02/27/32723.html

          后來下載源代碼下來找到了修改bug的地方。
          并把代碼發到 displaytag的jira里了,具體地址在:
          http://jira.codehaus.org/browse/DISPL-303
           (有人已經提交這個bug了)


          org.displaytag.pagination.SmartListHelper.java
          把下面兩個方法的代碼改寫如下:

               public int getFirstIndexForCurrentPage() {
                  return (this.currentPage - 1) * this.pageSize;
              }

              /**
               * Returns the index into the master list of the last object that should appear on the current page that the user is
               * viewing.
               * @return int
               */
              protected int getLastIndexForCurrentPage() {
                  if (this.partialList) {
                      return (getFirstIndexForCurrentPage()) +
                              Math.min(this.pageSize - 1, this.fullList.size() - 1);
                  } else {
                      return getLastIndexForPage(this.currentPage);
                  }
              }


          順便記錄 displaytag 1.1 使用Partial Lists大數據量分頁的例子:

          在近量不改動現有代碼的基礎上來使用displaytag結合數據庫分頁.

          1.先設置總頁數:

          <%
             Integer totalNum = new Integer(919);
          request.setAttribute("totalNum",totalNum);//設置總記錄條數
          %>

          2.配置displaytag的 兩個屬性:partialList="true" size="totalNum"
          比如:
            <display:table id="testtbid"  name="requestScope.testlist" pagesize="20" partialList="true" size="totalNum">

          3.在jsp中獲得翻頁信息的代碼:

          <%

          下面代碼是取得翻頁數

          //如果沒有為table設置 id那么就要寫成ParamEncoder(null);
            String rpname = new org.displaytag.util.ParamEncoder("testtbid")
                .encodeParameterName(
                    org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
            System.out.println("當前頁數:" + rpname + " = " +
                               request.getParameter(rpname));
                 //然后根據當前頁數去從數據庫中取出相應數據。

           

          //see: http://displaytag.sourceforge.net/11/displaytag/apidocs/org/displaytag/tags/TableTagParameters.html

          %>
          表格分頁導航條里的分頁鏈接個數默認是8個,可以通過下面的代碼來更改
          //在<display:table>標簽內
              <display:setProperty name="paging.banner.group_size" value="20"/>
          //</display:table>

          當然也可以通過實現 org.displaytag.pagination.PaginatedList接口來完成這個要求。
          更多信息,請參考:
          http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html

          利用內置el在displaytag里顯示checkbox非常簡單:

                               <display:column title='select User' >
           <input type="checkbox" name="firstName"  value="{testtbid.name}" />${testtbid.name}
          </display:column>

          posted on 2006-03-14 21:01 lizongbo 的編程學習 閱讀(7350) 評論(6)  編輯  收藏 所屬分類: java 積累
          主站蜘蛛池模板: 邹城市| 延津县| 绥棱县| 渝北区| 崇州市| 灵川县| 焦作市| 永寿县| 绥中县| 盐津县| 天长市| 北流市| 福海县| 勃利县| 晴隆县| 兴安县| 迁安市| 闽清县| 荆门市| 改则县| 冷水江市| 南华县| 曲靖市| 洞口县| 镶黄旗| 岳普湖县| 佛冈县| 牙克石市| 柯坪县| 永修县| 新营市| 宁安市| 理塘县| 大洼县| 舞钢市| 甘孜| 滕州市| 嘉鱼县| 正安县| 毕节市| 新竹县|