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 的編程學習 閱讀(7345) 評論(6)  編輯  收藏 所屬分類: java 積累
          主站蜘蛛池模板: 长子县| 新干县| 平昌县| 八宿县| 武陟县| 郁南县| 南京市| 茶陵县| 沙湾县| 南投县| 淳化县| 富宁县| 阳谷县| 县级市| 会泽县| 三台县| 东台市| 石棉县| 巴林右旗| 乌兰察布市| 靖宇县| 合山市| 彰化县| 太仆寺旗| 清新县| 中宁县| 夏邑县| 芒康县| 波密县| 扶余县| 锡林浩特市| 麻栗坡县| 静海县| 肃北| 鹤岗市| 丰台区| 应用必备| 云阳县| 嘉兴市| 宿松县| 文安县|