displaytag 分頁-添加頁碼輸入框跳轉至指定頁


環境前提:工程引用displaytag-1.2.jar 使用displaytag自動生成的分頁

修改分頁步驟

1.修改配置文件displaytag.properties

原配置文件:displaytag-1.2.jar --> org.displaytag.properties --> displaytag.properties

新建配置文件displaytag.properties放在/WEB-INF/classes目錄下,新配置文件中相同key的值將會覆蓋原配置文件中的值

在新配置文件中修改原配置文件中paging.banner.full paging.banner.first paging.banner.last的值

paging.banner.full paging.banner.first添加(輸入框和跳轉)代碼:

\u7b2c<input id="gotoPageNumber_displaytag">\u9875 <a onclick="gotoPage_displaytag(0)">GO</a><input type="hidden" id="lastPageUrl_displaytag" value="{4}"/>

paging.banner.last添加(輸入框和跳轉)代碼:

\u7b2c<input id="gotoPageNumber_displaytag">\u9875 <a onclick="gotoPage_displaytag(1)">GO</a><input type="hidden" id="prevPageUrl_displaytag" value="{2}"/>

備注:

displaytag.properties中漢字存儲的是Unicode碼 \u7b2c為第 \u9875為頁

{4}最后解析為尾頁a標簽的href值,即跳轉到尾頁的鏈接

{2}最后解析為上一頁a標簽的href值,即跳轉到上一頁的鏈接

paging.banner.full paging.banner.first用尾頁的鏈接,目的是獲取總頁數

paging.banner.last用上一頁的鏈接,是因為尾頁此時沒有鏈接,通過上一頁獲取總頁數(上一頁的頁數+1即為總頁數)

修改完成配置文件后需要重新啟動服務

 

如果只有一個jsp頁面需要修改為有跳轉功能的分頁可以直接在jsp頁面修改配置文件的值

<display:setProperty name="paging.banner.full" value='<span class="pagelinks">...添加代碼在此處,和上一樣...</span>' />

<display:setProperty name="paging.banner.first" value='<span class="pagelinks">...添加代碼在此處,和上一樣...</span>' />

<display:setProperty name="paging.banner.last" value='<span class="pagelinks">...添加代碼在此處,和上一樣...</span>' />

 

2.添加跳轉事件(gotoPage_displaytag())

可以單獨新建js文件在jsp頁面進行引用 也可以直接將js方法添加到jsp頁面已經引用的共通js文件中

function gotoPage_displaytag(pageFlag) {

    // 跳轉到第多少頁只能輸入正整數 正整數正則表達式
    var T = /^[1-9]\d*$/;

    // 獲取輸入的值 用JS方法獲取 以防頁面沒有引用JQUERY
    var pageNum = document.getElementById("gotoPageNumber_displaytag").value;

    // 對輸入的頁數進行校驗 如果輸入的頁數不是正整數 什么也不做
    if (!T.test(pageNum)) {
        return;
    }

    // 獲取頁面跳轉URL pageFlag=0時獲取的是尾頁的URL pageFlag=1時獲取的是上一頁的URL
    var url = null;
    if (pageFlag == 0) {
        // paging.banner.full
        // paging.banner.first
        // 獲取的是尾頁的URL
        url = document.getElementById("lastPageUrl_displaytag").value;
    } else {
        // pageFlag == 1
        // paging.banner.last
        // 獲取的是上一頁的URL
        url = document.getElementById("prevPageUrl_displaytag").value;
    }

    // 獲取總頁數
    // d-16544-p是displaytag-1.2.jar通過row生成記錄頁碼的key 
    // java代碼中通過new ParamEncoder("row").encodeParameterName(TableTagParameters.PARAMETER_PAGE)獲取該key
    // 進一步通過request.getParameter(key)獲取指定跳轉到的頁數
    var urlArray = url.split("d-16544-p=");
    var urlLastPart = urlArray[1];
    // url中用&分開各個參數傳值
    var index = urlLastPart.indexOf("&");
    var totalPageNum = null;
    if (index < 0) {
        // d-16544-p是最后一個參數 urlLastPart即為頁數
        totalPageNum = urlLastPart;
        // 刪除第二部分參數字符串中頁數的值 下將設置為即將跳轉的頁數
        urlLastPart = "";
    } else {
        // d-16544-p不最后一個參數 從urlLastPart中獲取頁數
        totalPageNum = urlLastPart.substr(0, index);
        // 刪除第二部分參數字符串中頁數的值 下將設置為即將跳轉的頁數
        urlLastPart = urlLastPart.substr(index);
    }
    if (pageFlag == 1) {
        // 總頁數 = 上一頁頁數 + 1
        totalPageNum = parseInt(totalPageNum) + 1;
    }

    // 判斷輸入頁數是否超過總頁數 如果沒有超過總頁數替換頁數為輸入頁 超過總頁數按最大頁查詢
    // 設置新的url
    // 第一部分參數
    url = urlArray[0] + 'd-16544-p=';
    // 跳轉的頁數
    if (parseInt(pageNum) < parseInt(totalPageNum)) {
        url += pageNum;
    } else {
        url += totalPageNum;
    }
    // 第二部分參數
    url += urlLastPart;

    // 跳轉到指定頁數
    window.location = url;
}

 displaytag官方網站(http://displaytag.sourceforge.net)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM