<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Tin's Blog

    You are coming a long way, baby~Thinking, feeling, memory...

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks



    為我們的項目寫的一個輕量的分頁API。目的在于將分頁與數據查詢的邏輯完全剝離。我以前看過robbin發的通過detachedCriteria實現的分頁那片貼子,里面把分頁和數據查詢結合在一起了。而我覺得分開更輕量,而且替換也比較容易。但是這個實現中有一個反模式,在邏輯中生成了代碼,無奈之選,為了簡便。其中字符生成可以自己擴展i18n實現,應該非常容易。
    分頁實現的接口:
    package?com.goldnet.framework.util.paging;

    /**
    ?*?分頁操作的接口
    ?*?
    @author?Tin
    ?
    */

    public?interface?IPagination?{

    ????
    /**
    ?????*?默認的分頁大小
    ?????
    */

    ????
    public?static?final?int?DEFAULT_PAGE_SIZE?=?15;

    ????
    /**
    ?????*?默認的分頁參數,指URL中用到的參數名
    ?????
    */

    ????
    public?static?final?String?PAGE_SIZE_KEY?=?"pageSize";

    ????
    /**
    ?????*?默認的頁碼參數,指URL中用到的參數名
    ?????
    */

    ????
    public?static?final?String?PAGE_NO_KEY?=?"pageno";

    ????
    /**
    ?????*?獲取總頁數
    ?????*?
    @return?總頁數
    ?????
    */

    ????
    int?getPageSum();

    ????
    /**
    ?????*?下一頁的頁碼
    ?????*?
    @return
    ?????
    */

    ????
    int?getNextPageNo();

    ????
    /**
    ?????*?上一頁的頁碼
    ?????*?
    @return
    ?????
    */

    ????
    int?getPrevPageNo();

    ????
    /**
    ?????*?是否有下一頁,即是否為最后一頁
    ?????*?
    @return?是否有下一頁
    ?????
    */

    ????
    boolean?hasNextPage();

    ????
    /**
    ?????*?是否有上一頁,即是否為第一頁
    ?????*?
    @return?是否有上一頁
    ?????
    */

    ????
    boolean?hasPrevPage();

    ????
    /**
    ?????*?添加參數名稱、值對,如果頁面需要使用parameters傳遞分頁外的附加參數
    ?????*?
    @param?parameterName?參數名
    ?????*?
    @param?parameterValue?參數值
    ?????
    */

    ????
    void?addPageParameter(String?parameterName,?String?parameterValue);

    ????String?getPageUrl();

    ????String?getPageHtmlStr();

    ????
    int?getItemSum();

    ????
    void?setItemSum(int?itemSum);

    ????String?getPageExtension();

    ????
    void?setPageExtension(String?pageExtension);

    ????String?getPageName();

    ????
    void?setPageName(String?pageName);

    ????
    int?getPageNo();

    ????
    void?setPageNo(int?pageNo);

    ????
    int?getPageSize();

    ????
    void?setPageSize(int?pageSize);

    }

    抽象基類:
    /**
    ?*
    ?
    */

    package?com.goldnet.framework.util.paging;

    import?java.util.Iterator;
    import?java.util.LinkedList;
    import?java.util.List;


    /**
    ?*?對PagingString的重構
    ?*?
    @author?Tin
    ?*
    ?
    */

    public?abstract?class?AbstractPagination?implements?IPagination?{
    ????
    /**
    ?????*?Page上顯示的List中的domainModel的總數
    ?????
    */

    ????
    protected?int?itemSum?=?-1;

    ????
    /**
    ?????*?分頁的大小
    ?????
    */

    ????
    protected?int?pageSize?=?DEFAULT_PAGE_SIZE;

    ????
    /**
    ?????*?頁數
    ?????
    */

    ????
    protected?int?pageNo?=?0;

    ????
    /**
    ?????*?分頁的頁面的相對URL,不包括后綴
    ?????
    */

    ????
    protected?String?pageName?=?null;

    ????
    /**
    ?????*?頁面的URL的后綴
    ?????
    */

    ????
    protected?String?pageExtension?=?".action";

    ????
    /**
    ?????*?參數列表
    ?????
    */

    ????
    protected?List<PageParameter>?parameterList?=?new?LinkedList<PageParameter>();

    ????
    /**
    ?????????*?返回的分頁信息的字符串
    ?????????
    */

    ????
    protected?String?pageHtmlStr?=?null;

    ????
    /**
    ?????*?默認的構造函數
    ?????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ?????*?
    @param?pageExtension?頁面的URL的后綴
    ?????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ?????*?
    @param?pageNo?頁數
    ?????*?
    @param?pageSize?分頁的大小
    ?????
    */

    ????
    public?AbstractPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo,?int?pageSize)?{
    ????????
    super();

    ????????
    this.pageName?=?pageName;
    ????????
    this.pageExtension?=?pageExtension;
    ????????
    this.itemSum?=?itemSum;
    ????????
    this.pageNo?=?pageNo;
    ????????
    this.pageSize?=?pageSize;
    ????}


    ????
    /**
    ?????*?無PageSize構造函數,使用默認PageSize為15
    ?????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ?????*?
    @param?pageExtension?頁面的URL的后綴
    ?????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ?????*?
    @param?pageNo?頁數
    ?????
    */

    ????
    public?AbstractPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo)?{
    ????????
    super();

    ????????
    this.pageName?=?pageName;
    ????????
    this.pageExtension?=?pageExtension;
    ????????
    this.itemSum?=?itemSum;
    ????????
    this.pageNo?=?pageNo;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageSum()
    ?????
    */

    ????
    public?int?getPageSum()?{
    ????????
    if?((itemSum?!=?-1)?&&?(pageSize?>?0))?{
    ????????????
    return?((itemSum?%?pageSize)?==?0)???(itemSum?/?pageSize)
    ???????????????????????????????????????????????:?((itemSum?
    /?pageSize)?+?1);
    ????????}


    ????????
    return?0;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getNextPageNo()
    ?????
    */

    ????
    public?int?getNextPageNo()?{
    ????????
    return?(pageNo?<?(getPageSum()?-?1))???(pageNo?+?1)?:?(getPageSum()?-
    ????????
    1);
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPrevPageNo()
    ?????
    */

    ????
    public?int?getPrevPageNo()?{
    ????????
    return?(pageNo?>?0)???(pageNo?-?1)?:?0;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#hasNextPage()
    ?????
    */

    ????
    public?boolean?hasNextPage()?{
    ????????
    if?(getPageSum()?<=?pageNo)?{
    ????????????
    return?false;
    ????????}


    ????????
    return?true;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#hasPrevPage()
    ?????
    */

    ????
    public?boolean?hasPrevPage()?{
    ????????
    if?(pageNo?<=?0)?{
    ????????????
    return?false;
    ????????}


    ????????
    return?true;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#addPageParameter(java.lang.String,?java.lang.String)
    ?????
    */

    ????
    public?void?addPageParameter(String?parameterName,?String?parameterValue)?{
    ????????PageParameter?pp?
    =?new?PageParameter(parameterName,?parameterValue);
    ????????
    this.parameterList.add(pp);
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageUrl()
    ?????
    */

    ????
    public?String?getPageUrl()?{
    ????????String?url?
    =?pageName?+?pageExtension;

    ????????
    if?(parameterList.size()?>?0)?{
    ????????????Iterator
    <PageParameter>?iterator?=?parameterList.iterator();
    ????????????PageParameter?pageFirstParameter?
    =?iterator.next();
    ????????????url?
    +=?("?"?+?pageFirstParameter.getParameterName()?+?"="?+
    ????????????pageFirstParameter.getParameterValue());

    ????????????
    while?(iterator.hasNext())?{
    ????????????????PageParameter?pageParameter?
    =?iterator.next();
    ????????????????url?
    +=?("&"?+?pageParameter.getParameterName()?+?"="?+
    ????????????????pageParameter.getParameterValue());
    ????????????}

    ????????}
    ?else?{
    ????????????
    //補充一個?解決附加分頁參數時無?的問題
    ????????????url?+=?"?";
    ????????}


    ????????
    if?(pageSize?!=?DEFAULT_PAGE_SIZE)?{
    ????????????url?
    +=?("&"?+?PAGE_SIZE_KEY?+?"="?+?pageSize);
    ????????}


    ????????
    return?url;
    ????}


    ????
    /**
    ?????*?子類必須覆蓋的方法,用來計算分頁的字符的方法
    ?????
    */

    ????
    public?abstract?void?compilePaginationString();

    ????
    /**
    ?????*?Getters?&?Setters
    ?????
    */


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageHtmlStr()
    ?????
    */

    ????
    public?String?getPageHtmlStr()?{
    ????????compilePaginationString();

    ????????
    return?pageHtmlStr;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getItemSum()
    ?????
    */

    ????
    public?int?getItemSum()?{
    ????????
    return?itemSum;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#setItemSum(int)
    ?????
    */

    ????
    public?void?setItemSum(int?itemSum)?{
    ????????
    this.itemSum?=?itemSum;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageExtension()
    ?????
    */

    ????
    public?String?getPageExtension()?{
    ????????
    return?pageExtension;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#setPageExtension(java.lang.String)
    ?????
    */

    ????
    public?void?setPageExtension(String?pageExtension)?{
    ????????
    this.pageExtension?=?pageExtension;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageName()
    ?????
    */

    ????
    public?String?getPageName()?{
    ????????
    return?pageName;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#setPageName(java.lang.String)
    ?????
    */

    ????
    public?void?setPageName(String?pageName)?{
    ????????
    this.pageName?=?pageName;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageNo()
    ?????
    */

    ????
    public?int?getPageNo()?{
    ????????
    return?pageNo;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#setPageNo(int)
    ?????
    */

    ????
    public?void?setPageNo(int?pageNo)?{
    ????????
    this.pageNo?=?pageNo;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#getPageSize()
    ?????
    */

    ????
    public?int?getPageSize()?{
    ????????
    return?pageSize;
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.IPagination#setPageSize(int)
    ?????
    */

    ????
    public?void?setPageSize(int?pageSize)?{
    ????????
    this.pageSize?=?pageSize;
    ????}


    ????
    public?List<PageParameter>?getParameterList()?{
    ????????
    return?parameterList;
    ????}


    ????
    public?void?setParameterList(List<PageParameter>?parameterList)?{
    ????????
    this.parameterList?=?parameterList;
    ????}


    ????
    /**
    ?????*?分頁參數,頁面的QueryString形式都是?parameter=value的形式,此處為一對
    ?????*?數據的抽象
    ?????*?
    @author?Tin
    ?????*
    ?????
    */

    ????
    private?class?PageParameter?{
    ????????
    /**
    ?????????????*?參數名稱
    ?????????????
    */

    ????????
    private?String?parameterName;

    ????????
    /**
    ?????????????*?參數值
    ?????????????
    */

    ????????
    private?String?parameterValue;

    ????????
    /**
    ?????????????*?唯一構造函數
    ?????????????*?
    @param?parameterName?參數名稱
    ?????????????*?
    @param?parameterValue?參數值
    ?????????????
    */

    ????????
    public?PageParameter(String?parameterName,?String?parameterValue)?{
    ????????????
    this.parameterName?=?parameterName;
    ????????????
    this.parameterValue?=?parameterValue;
    ????????}


    ????????
    public?String?getParameterName()?{
    ????????????
    return?parameterName;
    ????????}


    ????????
    public?String?getParameterValue()?{
    ????????????
    return?parameterValue;
    ????????}

    ????}

    }

    ? 默認的分頁實現:

    package?com.goldnet.framework.util.paging;


    /**
    ?*?默認的分頁實現
    ?*?
    @author?Tin
    ?*
    ?
    */

    public?class?DefaultPagination?extends?AbstractPagination?{
    ????
    /**
    ????*?默認的構造函數
    ????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ????*?
    @param?pageExtension?頁面的URL的后綴
    ????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ????*?
    @param?pageNo?頁數
    ????*?
    @param?pageSize?分頁的大小
    ?????
    */

    ????
    public?DefaultPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo,?int?pageSize)?{
    ????????
    super(pageName,?pageExtension,?itemSum,?pageNo,?pageSize);
    ????}


    ????
    /**
    ?????????*?無PageSize構造函數,使用默認PageSize為15
    ?????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ?????*?
    @param?pageExtension?頁面的URL的后綴
    ?????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ?????*?
    @param?pageNo?頁數
    ?????????
    */

    ????
    public?DefaultPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo)?{
    ????????
    super(pageName,?pageExtension,?itemSum,?pageNo);
    ????}


    ????@Override
    ????
    public?void?compilePaginationString()?{
    ????????String?pageUrl?
    =?getPageUrl();
    ????????pageHtmlStr?
    =?"\u5171?"?+?itemSum?+?"?\u6761?&nbsp;\u7b2c?"?+
    ????????????(pageNo?
    +?1)?+?"?\u9875?/?\u5171?"?+?getPageSum()?+
    ????????????
    "?\u9875&nbsp;?<a?href=\""?+?pageUrl?+?"&"?+?PAGE_NO_KEY?+
    ????????????"=0\">\u9996\u9875</a>&nbsp;&nbsp;<a?href=\""?+?pageUrl?+?"&"?+
    ????????????PAGE_NO_KEY?
    +?"="?+?getPrevPageNo()?+
    ????????????
    "\">\u4e0a\u4e00\u9875</a>?&nbsp;<a?href=\""?+?pageUrl?+?"&"?+
    ????????????PAGE_NO_KEY?
    +?"="?+?getNextPageNo()?+
    ????????????
    "\">\u4e0b\u4e00\u9875</a>?&nbsp;<a?href=\""?+?pageUrl?+?"&"?+
    ????????????PAGE_NO_KEY?
    +?"="?+?(getPageSum()?-?1)?+
    ????????????
    "\">\u5c3e\u9875</a>&nbsp;&nbsp;\u6bcf\u9875\u663e\u793a"?+
    ????????????pageSize?+?"\u6761";
    ????}

    }


    數字風格的實現:

    /**
    ?*
    ?
    */

    package?com.goldnet.framework.util.paging;


    /**
    ?*?數字頁碼風格的分頁實現
    ?*?
    @author?Tin
    ?*
    ?
    */

    public?class?PageNumberPagination?extends?AbstractPagination?{
    ????
    /**
    ?????*?默認的構造函數
    ?????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ?????*?
    @param?pageExtension?頁面的URL的后綴
    ?????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ?????*?
    @param?pageNo?頁數
    ?????*?
    @param?pageSize?分頁的大小
    ?????????
    */

    ????
    public?PageNumberPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo,?int?pageSize)?{
    ????????
    super(pageName,?pageExtension,?itemSum,?pageNo,?pageSize);
    ????}


    ????
    /**
    ?????*?無PageSize構造函數,使用默認PageSize為15
    ????*?
    @param?pageName?分頁的頁面的相對URL,不包括后綴
    ????*?
    @param?pageExtension?頁面的URL的后綴
    ????*?
    @param?itemSum?Page上顯示的List中的domainModel的總數
    ????*?
    @param?pageNo?頁數
    ?????
    */

    ????
    public?PageNumberPagination(String?pageName,?String?pageExtension,
    ????????
    int?itemSum,?int?pageNo)?{
    ????????
    super(pageName,?pageExtension,?itemSum,?pageNo);
    ????}


    ????
    /*?(non-Javadoc)
    ?????*?@see?com.goldnet.framework.util.paging.AbstractPagination#compilePaginationString()
    ?????
    */

    ????@Override
    ????
    public?void?compilePaginationString()?{
    ????????String?pageUrl?
    =?getPageUrl();
    ????????StringBuffer?returnString?
    =?new?StringBuffer();
    ????????returnString.append(
    "\u5171?"?+?itemSum?+?"?\u6761?&nbsp;\u7b2c?"?+
    ????????????(pageNo?
    +?1)?+?"?\u9875?/?\u5171?"?+?getPageSum()?+
    ????????????
    "?\u9875&nbsp;?<a?href=\""?+?pageUrl?+?"&"?+?PAGE_NO_KEY?+?"="?+
    ????????????getPrevPageNo()?+?"\">&lt;&lt;</a>&nbsp;");

    ????????
    for?(int?page?=?0;?page?<?getPageSum();?page++)?{
    ????????????
    if(page!=pageNo){
    ????????????????returnString.append(
    "<a?href=\""+pageUrl?+"&"+PAGE_NO_KEY?+?"="?+?page?+"\">"+(page+1)+"</a>&nbsp;");
    ????????????}
    ?else?{
    ????????????????returnString.append(
    "<a?href=\""+pageUrl?+"&"+PAGE_NO_KEY?+?"="?+?page?+"\"><span?style=\"background:black;color:#eee;font-size:120%;padding-left:5px;padding-right:5px;text-align:center;\">"+(page+1)+"</span></a>&nbsp;");
    ????????????}

    ????????}


    ????????returnString.append(
    "&nbsp;<a?href=\""?+?pageUrl?+?"&"?+
    ????????????PAGE_NO_KEY?+?"="?+?getNextPageNo()?+
    ????????????
    "\">&gt;&gt;</a>?&nbsp;&nbsp;\u6bcf\u9875\u663e\u793a"?+?pageSize?+
    ????????????"\u6761");
    ????????pageHtmlStr?
    =?returnString.toString();
    ????}

    }


    測試類,用的JUnit3,其實JUnit4更優雅:D
    package?com.goldnet.test.unittest.framework.paging;

    import?junit.framework.TestCase;

    import?org.apache.commons.logging.Log;
    import?org.apache.commons.logging.LogFactory;

    import?com.goldnet.framework.util.paging.DefaultPagination;
    import?com.goldnet.framework.util.paging.IPagination;
    import?com.goldnet.framework.util.paging.PageNumberPagination;

    public?class?TestPagination?extends?TestCase?{
    ????
    protected?transient?final?Log?log?=?LogFactory.getLog(getClass());

    ????
    protected?void?setUp()?throws?Exception?{
    ????????
    super.setUp();
    ????}


    ????
    protected?void?tearDown()?throws?Exception?{
    ????????
    super.tearDown();
    ????}


    ????
    public?void?testDefaultPainationWith3Parameters()?{
    ????????IPagination?p?
    =?new?DefaultPagination("test",".action",50,2);
    ????????p.addPageParameter(
    "a","b");
    ????????p.addPageParameter(
    "c","234");
    ????????p.addPageParameter(
    "e.ddd","34234adbb");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testDefaultPainationWith1Parameters()?{
    ????????IPagination?p?
    =?new?DefaultPagination("test",".action",50,2);
    ????????p.addPageParameter(
    "a","b");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testDefaultPainationWithNoParameters()?{
    ????????IPagination?p?
    =?new?DefaultPagination("test",".action",50,2);
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testDefaultPainationWith3ParametersAndCustomPageSize()?{
    ????????IPagination?p?
    =?new?DefaultPagination("test",".action",50,2,5);
    ????????p.addPageParameter(
    "a","b");
    ????????p.addPageParameter(
    "c","234");
    ????????p.addPageParameter(
    "e.ddd","34234adbb");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testDefaultPainationWithNoParametersAndCustomPageSize()?{
    ????????IPagination?p?
    =?new?DefaultPagination("test",".action",50,2,5);
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testPageNumberPainationWith3Parameters()?{
    ????????IPagination?p?
    =?new?PageNumberPagination("test",".action",50,2);
    ????????p.addPageParameter(
    "a","b");
    ????????p.addPageParameter(
    "c","234");
    ????????p.addPageParameter(
    "e.ddd","34234adbb");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testPageNumberPainationWith1Parameters()?{
    ????????IPagination?p?
    =?new?PageNumberPagination("test",".action",50,2);
    ????????p.addPageParameter(
    "a","b");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testPageNumberPainationWithNoParameters()?{
    ????????IPagination?p?
    =?new?PageNumberPagination("test",".action",50,2);
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testPageNumberPainationWith3ParametersAndCustomPageSize()?{
    ????????IPagination?p?
    =?new?PageNumberPagination("test",".action",50,2,5);
    ????????p.addPageParameter(
    "a","b");
    ????????p.addPageParameter(
    "c","234");
    ????????p.addPageParameter(
    "e.ddd","34234adbb");
    ????????log.info(p.getPageHtmlStr());
    ????}

    ????
    ????
    public?void?testPageNumberPainationWithNoParametersAndCustomPageSize()?{
    ????????IPagination?p?
    =?new?PageNumberPagination("test",".action",50,2,5);
    ????????log.info(p.getPageHtmlStr());
    ????}

    }


    說實話這么丑陋的東西本不愿意現眼……但是實在沒什么可發的,應朋友所托共享出來。
    特點就是分頁邏輯不管你用hibernate、JDBC、iBatis或者什么其他的,都可以和它一起工作,因為我任為對于DAO或者Action來說分頁邏輯就應該是pageSize、Pageno、itemSum這幾個參數的傳遞,具體的顯示上的問題應該交給第三方來負責,如taglib什么的,所以才寫了這樣的實現。而且這個實現應該容易擴展。配合js跳轉(css也應該抽出)等可以實現更多風格:D
    posted on 2006-03-31 12:30 Tin 閱讀(3488) 評論(6)  編輯  收藏 所屬分類: Other Project

    評論

    # re: 分頁的輕量實現 2006-03-31 19:25 qge
    要是有個DomO提供下載就好了。。


      回復  更多評論
      

    # re: 分頁的輕量實現 2006-04-01 11:08 唯珍
    最好把用到的技術,做個簡單的例子,共享一下了。這樣看回更清晰一些。謝謝了。
    我最近做一個struts分頁,我想找一個比較完整的例子。不是將所有數據從數據庫
    查詢出來在分頁而是查到那一頁在顯示當前頁的信息。能不能幫個忙呀。謝謝了  回復  更多評論
      

    # re: 分頁的輕量實現 2006-05-25 12:22 龍江
    上面的那位大哥,不知道你有沒有用struts+hibernate做過分頁  回復  更多評論
      

    # re: 分頁的輕量實現 2006-05-25 12:23 龍江
    如果有的話,可不可以把整個工程發到我的郵箱里面去
    longjiang2zhouna@163.com  回復  更多評論
      

    # re: 分頁的輕量實現 2006-06-14 16:13 追逐的夢
    作者,可以發放一個Demo哦。這樣更直觀易懂呀。謝謝啦!Mail:huangby@fj172.com  回復  更多評論
      

    # re: 分頁的輕量實現 2006-08-29 16:32 路佳人
    作者不厚道
    這么多人有疑問也不給個答復  回復  更多評論
      

    主站蜘蛛池模板: 亚洲成AV人片一区二区| 亚洲国产成a人v在线观看 | 亚洲午夜久久久久久尤物| 亚洲6080yy久久无码产自国产 | 一级毛片免费播放| 日韩电影免费在线观看视频 | 亚洲自偷自偷图片| 亚洲影视自拍揄拍愉拍| 产传媒61国产免费| 国产成人无码免费看视频软件| 亚洲国产人成精品| 亚洲18在线天美| 99在线免费观看| 欧洲美熟女乱又伦免费视频| 亚洲AV永久无码精品| 国产精品亚洲一区二区无码| 84pao强力永久免费高清| 亚洲阿v天堂在线2017免费| 亚洲卡一卡2卡三卡4麻豆| 中文字幕永久免费视频| 日韩视频免费一区二区三区| 亚洲日本一区二区三区| 一级毛片在播放免费| 毛色毛片免费观看| 亚洲午夜在线电影| 精精国产www视频在线观看免费| 精品久久久久国产免费| 亚洲精选在线观看| 美女巨胸喷奶水视频www免费| 国产成人无码区免费A∨视频网站| 亚洲黄色免费电影| 91成人免费观看在线观看| 国产美女精品久久久久久久免费| 久久久久亚洲精品日久生情| a级毛片免费全部播放| 夜色阁亚洲一区二区三区| 国产成人亚洲合集青青草原精品| 十八禁无码免费网站| 亚洲一区二区三区影院| 无人视频免费观看免费视频| 成全视频免费高清|