環境前提:工程引用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)
