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

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

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

    ALL is Well!

    敏捷是一條很長的路,摸索著前進著

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      30 隨筆 :: 23 文章 :: 71 評論 :: 0 Trackbacks
    本文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處BlogJava

    本次分頁組件著重于頁面(Freemarker部分)、及Action部分。
    至于Service及持久層處理,只是做了一個模擬的實現(xiàn),實際開發(fā)中,我是應(yīng)用了iBatis,封裝了分頁調(diào)用。
    由于用法有所不同,所以就不放在源碼范圍內(nèi),也不在這里介紹了。
    這里的分頁功能只提供了 上一頁、下一頁、指定頁 的分頁,但在分頁Java代碼中包含了 首頁、末頁的實現(xiàn)。有需要的可自行添加。


    分頁的效果如圖:



    分頁實現(xiàn)代碼介紹:
    1.pagination.ftl 分頁組件 頁面部分。

    2.PageSupport.java 分頁Action部分。

    3.WebPager.java 計算分頁動作。

    4.Pager.java 保存分頁信息,由Action傳遞到Service,根據(jù)Pager對象取得數(shù)據(jù)。

    5.MockDataBase.java 模擬Dao,實現(xiàn)分頁處理。


    使用該組件的方法如下:

    第一步:引入分頁組件

    <#include "/ftl/ecs/pagination.ftl" />
    分頁組件使用了Freemarker的宏。

    第二步:在ftl文件中使用分頁組件

    分頁組件需要輸入4個參數(shù),分別為id、method、btnCssClass、cssClass,其中id、method必須輸入;btnCssClass、cssClass可選。以下是參數(shù)詳細說明:
    1.id : 分頁組件的唯一標識。
    2.method : 分頁用的Action。例如:定義了Action為Pagination,則method輸入 Pagination.action;若為動態(tài)方法調(diào)用,可輸入Pagination!query.action
    3.cssClass : 分頁組件的class屬性。例如cssClass="center"。
    4.btnCssClass : 分頁組件按鈕的class屬性。例如btnCssClass="btn_history"。

    <@pagination id="***" btnCssClass="***" cssClass="***" method="***.action">
    <table>
    <tr>
    <td></td>
    ...
    </tr>
    </table>
    </pagination>
    

    [編輯]第三步:繼承分頁類PageSupport

    PageSupport.java繼承自ActionSupport.java,在要分頁的方法中使用PageSupport.java提供的List pageCall(String module, String target, Map dataMap)分頁調(diào)用。
    通過setPageSize(int pageSize)方法設(shè)定每頁顯示的記錄數(shù)。
    API詳細說明:
    1.pageCall

     參數(shù)說明:
    1) String module : 調(diào)用service的通道,例如:upf、esf。
    2) String target : 要調(diào)用的service的方法,例如:com.ailk.ecs.service.TdupfPageService.selectAllUser。
    3) Map dataMap : 輸入?yún)?shù)。
    返回值說明:
    List : 頁面顯示的數(shù)據(jù)記錄。
    

    2.setPageSize

     參數(shù)說明:
    1) int pageSize : 每頁顯示記錄數(shù)。
    

    [編輯]
    第四步:Service代碼中使用

    在service封裝分頁Dao或者分頁方法。

    pagination.ftl代碼:
    <#macro pagination id method cssClass="" btnCssClass="" pageSize='10'>
    <div id='${id}'>
    <#nested> <#-- 要刷新的區(qū)域 -->

    <div class="${cssClass}">
        
    <input type="button" onclick="Pagination${id}.gotoPage('prev', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="上一頁" class="${btnCssClass}" />
        
    &nbsp;&nbsp;共 ${totalPages} 頁&nbsp;&nbsp;第 ${webPager.pageInfo.currentPage} 頁&nbsp;&nbsp;轉(zhuǎn)到
        
    <input type="text" id='${id}_inputPageNo' name='${id}_inputPageNo' size="6"/>頁 &nbsp;&nbsp;
        
    <input type="text" style="display:none"/>
        
    <input type="button" onclick="Pagination${id}.gotoPage('input', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="確定" class="${btnCssClass}" />
        
    <input type="button" onclick="Pagination${id}.gotoPage('next', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="下一頁" class="${btnCssClass}" />
    </div>

    <script>
    if (!this.Pagination${id} ) {
        
    this.Pagination${id} = {}

        
    // 分頁處理方法
        Pagination${id}.gotoPage = function(action, c, t) {
            
    var cmd = action;

            
    // 當總記錄數(shù)量小于等于每頁記錄數(shù)量時,分頁動作無效
            if (t <= ${webPager.pageInfo.pageSize}{
                
    return;
            }


            
    // 確定按鈕處理
            if(action == 'input') {
                
    var inValue = $("#${id}_inputPageNo").val();

                
    if(inValue.match(/^[0-9]+$/&& parseInt(inValue) > 0{
                    cmd 
    = inValue;
                }

                
    else {
                    
    // TODO 提示錯誤信息
                    return ;
                }

            }


            $('#$
    {id}').load(
                '$
    {method} #${id}',
                
    {action : cmd,
                 totalSize : t,
                 currentPage : c
                }

            );
        }
    ;
        
        
    // 刷新當前頁面
        Pagination${id}.refreshPage = function() {
            
    //Pagination${id}.gotoPage('refresh');
            //scrollPage${id}('refresh', "${method}");
        }
    ;

        
    // 頁碼輸入框keyup事件
        //Pagination${id}.keyup = function(inputElem, currentPage, totalSize) {
            //if (inputElem.value.match(/^[0-9]+$/) && parseInt(inputElem.value) > 0) {
                //Pagination${id}.gotoPage(inputElem.value, currentPage, totalSize);
            //}
        //};
        
        
    //$("#${id}_inputPageNo").keyup(function(event){
            //if(event.keyCode == 13) {
                //Pagination${id}.keyup(this, '${webPager.pageInfo.currentPage}', '${totalSize}');
            //}
        //});
    }

    </script>

    </div>
    </#macro>



    點擊下載源碼。

    非maven化工程,自己找包吧。
    lib包如圖:

    posted on 2010-12-01 17:35 李 明 閱讀(5864) 評論(4)  編輯  收藏 所屬分類: Struts2 、Freemarker

    評論

    # re: 基于Struts2、Freemarker的分頁組件實現(xiàn)(附工程源碼) 2011-04-10 07:20 wangflood
    筆記嘛。  回復(fù)  更多評論
      

    # re: 基于Struts2、Freemarker的分頁組件實現(xiàn)(附工程源碼)[未登錄] 2011-06-06 11:52 cary
    @wangflood
      回復(fù)  更多評論
      

    # re: 基于Struts2、Freemarker的分頁組件實現(xiàn)(附工程源碼) 2012-07-31 08:16 Rach
    包里是什么工程,怎么導(dǎo)不到myeclipse中  回復(fù)  更多評論
      

    # re: 基于Struts2、Freemarker的分頁組件實現(xiàn)(附工程源碼) 2014-04-29 22:55 zuidaima
    請參考代碼:年末最代碼部分源碼大出血分享-freemarker,bootstrap,springdata jpa分頁代碼 ,下載地址:http://www.zuidaima.com/share/1606851189656576.htm
      回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲春色在线观看| 99久久99这里只有免费的精品 | 免费h视频在线观看| 亚洲码一区二区三区| 国产男女猛烈无遮挡免费视频网站| 亚洲精品视频免费观看| 亚洲黄色免费在线观看| 国产婷婷高清在线观看免费| 东方aⅴ免费观看久久av| 亚洲香蕉在线观看| 亚洲精品国产精品乱码在线观看| 91网站免费观看| 国产裸体美女永久免费无遮挡| 亚洲三级在线播放| 一本久久a久久精品亚洲| 好爽…又高潮了毛片免费看| a级毛片免费观看视频| 中文字幕乱码亚洲无线三区 | 亚洲国产成人一区二区三区| 午夜电影免费观看| 四虎影视在线影院在线观看免费视频 | 亚洲AV无码1区2区久久| 免费国产综合视频在线看| 8x网站免费入口在线观看| 免费一级毛suv好看的国产网站| 亚洲手机中文字幕| 国产亚洲精品a在线无码| 国产成人免费a在线视频app| 91免费人成网站在线观看18| 国产特黄特色的大片观看免费视频 | 永久免费av无码不卡在线观看| 在线观看免费黄网站| 亚洲av永久中文无码精品综合| 久久亚洲熟女cc98cm| 亚洲熟妇av一区二区三区| 免费欧洲美女牲交视频| 毛片a级毛片免费观看品善网| 免费无码又爽又刺激高潮视频| 黄色短视频免费看| 一边摸一边桶一边脱免费视频| 亚洲日韩精品国产一区二区三区|