用struts2不能直接用for循環,可以用org.apache.struts2.util.Counter來替代:
<div class="navigation">
<s:set value="#request.pageinfo" var="pinfo" />
<s:set value="'interbank_deposit.jsp'" var="pageName" />
<ol class="wp-paginate">
<li><span class="title">Pages:</span></li>
<!-- 計算起始頁 -->
<s:if test="#pinfo.currentPageNo-2 >=1">
<s:set value="#pinfo.currentPageNo-2" var="pageFirst" />
</s:if>
<s:else>
<s:set value="1" var="pageFirst" />
</s:else>
<!-- 計算終止頁 -->
<s:if test="#pinfo.currentPageNo+2 <= #pinfo.totalPage">
<s:set value="#pinfo.currentPageNo+2" var="pageLast" />
</s:if>
<s:else>
<s:set value="#pinfo.totalPage" var="pageLast" />
</s:else>
<!-- 準備遍歷 -->
<s:bean name="org.apache.struts2.util.Counter" var="counter">
<!-- 起始 -->
<s:param name="first" value="#pageFirst" />
<!-- 終止 -->
<s:param name="last" value="#pageLast" />
<!-- 上一頁 -->
<li><a href="" οnclick="pinjie('${pageName}','pageNo',${pageinfo.currentPageNo-1},this)" title="上一頁" class="next"><</a></li>
<!-- 是否顯示第一頁 -->
<s:if test="#pinfo.currentPageNo >= 4">
<li><a href="" title="1" οnclick="pinjie('${pageName}','pageNo',1,this)" class="page">1</a></li>
</s:if>
<!-- 是否顯示開始的省略號 -->
<s:if test="#pinfo.currentPageNo > 4">
<li><span class="gap">...</span></li>
</s:if>
<!-- 迭代遍歷 -->
<s:iterator >
<!-- 是否遍歷到當前頁 -->
<s:if test="(current-1) == #pinfo.currentPageNo">
<li><span class="page current"><s:property /></span></li>
</s:if><s:else>
<li><a href="" title="<s:property />" οnclick="pinjie('${pageName}','pageNo',<s:property />,this)" class="page" ><s:property /></a></li>
</s:else>
</s:iterator>
<!-- 是否顯示開始的省略號 -->
<s:if test="#pinfo.totalPage - #pinfo.currentPageNo > 3">
<li><span class="gap">...</span></li>
</s:if>
<!-- 是否顯示最後一頁 -->
<s:if test="#pinfo.totalPage - #pinfo.currentPageNo >= 3">
<li><a href="" title="${pageinfo.totalPage }" οnclick="pinjie('${pageName}','pageNo',${pageinfo.totalPage },this)" class="page">${pageinfo.totalPage }</a></li>
</s:if>
<!-- 下一頁 -->
<li><a href="" οnclick="pinjie('${pageName}','pageNo',${pageinfo.currentPageNo+1},this)" title="下一頁" class="next">></a></li>
</s:bean>
</ol>
</div>
顯示效果如下:
pinjie()是js函數,功能是在瀏覽器原有的參數 下添加新的分頁參數,如果原來的參數已經存在,則替換原來的參數,它接受四個參數分別是:pageName:頁面名稱或url路徑,key:參數名稱,value:參數值
代碼如下:
function pinjie(pageName, key, value, thisid) {
var search = window.location.search;
var suoyin = search.indexOf(key + "="); //找到參數
var s;
if (suoyin == -1) //未找到參數
{
if (search == "") { //如果沒有任何參數
s = "?" + key + "=" + value;
} else {
s = search + "&" + key + "=" + value;
}
} else {
var reg = new RegExp(key + "=[A-Za-z0-9]+"); //參數爲字母數字
s = search.replace(reg, key + "=" + value);
}
thisid.setAttribute("href", pageName + s);
}
還有一個百度來的js函數沒有用到,操作參數也很方便,GetQueryString(name),功能是得到瀏覽器name參數的值,代碼如下:
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return "1";
}