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 積累
          主站蜘蛛池模板: 望谟县| 济阳县| 定南县| 阿城市| 大连市| 常德市| 阿图什市| 盖州市| 临沭县| 衡东县| 新龙县| 泸州市| 名山县| 芦山县| 凭祥市| 钦州市| 平度市| 汝州市| 土默特右旗| 福鼎市| 三河市| 蓝田县| 武隆县| 全南县| 阿拉尔市| 东源县| 金秀| 涟源市| 尉犁县| 大丰市| 喀喇| 定陶县| 余庆县| 塘沽区| 巩义市| 象州县| 荥经县| 大荔县| 仲巴县| 武乡县| 吴江市|