計算公式:
如果總頁數<=10(列表長度),那麼begin=1,end=總頁數
使用公式計算;begin=當前-5, end=當前 + 4;
頭溢出:當begin<1時,讓begin=1
尾溢出:當end>總頁數時,讓end=總頁數
<center>
第${pb.pc }頁/共${pb.tp }頁
<a href="${pb.url }&pc=1">首頁</a>
<c:if test="${pb.pc > 1 }"> <%-- 當前頁大於1時才顯示上一頁 --%>
<a href="${pb.url }&pc=${pb.pc-1}">上一頁</a>
</c:if>
<%-- 計算begin、end --%>
<c:choose>
<%-- 如果總頁數不足10頁,那麼把所有的頁數都顯示出來! --%>
<c:when test="${pb.tp <= 10 }">
<c:set var="begin" value="1" />
<c:set var="end" value="${pb.tp }" />
</c:when>
<c:otherwise>
<%-- 當總頁數>10時,通過公式計算出begin和end --%>
<c:set var="begin" value="${pb.pc-5 }" />
<c:set var="end" value="${pb.pc+4 }" />
<%-- 頭溢出 --%>
<c:if test="${begin < 1 }">
<c:set var="begin" value="1" />
<c:set var="end" value="10" />
</c:if>
<%-- 尾溢出 --%>
<c:if test="${end > pb.tp }">
<c:set var="begin" value="${pb.tp - 9 }" />
<c:set var="end" value="${pb.tp }" />
</c:if>
</c:otherwise>
</c:choose>
<%-- 循環遍歷頁碼列表 --%>
<c:forEach var="i" begin="${begin }" end="${end }">
<c:choose>
<c:when test="${i eq pb.pc }">
[${i }]
</c:when>
<c:otherwise>
<a href="${pb.url }&pc=${i}">[${i }]</a>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${pb.pc < pb.tp }">
<a href="${pb.url }&pc=${pb.pc+1}">下一頁</a>
</c:if>
<a href="${pb.url }&pc=${pb.tp}">尾頁</a>
</center>