用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";
}