最多显示左右三页间隔,首页和末页:如果在第一页 首页不可点击,如果在最后一页 末页不可点击,上一页下一页同理
1页
当前任意页 1
2页
当前任意页 1 2
3页
当前任意页 1 2 3
4页
当前任意页 1 2 3 4
5页
当前任意页 1 2 3 4 5
6页
当前第1页 1 2 3 4 ... 6
当前第2-5页 1 2 3 4 5 6
当前第6页 1 ... 3 4 5 6
7页
当前第1页 1 2 3 4 ... 7
当前第2页 1 2 3 4 5 ... 7
当前第3-5页 1 2 3 4 5 6 7
当前第6页 1 ... 3 4 5 6 7
当前第7页 1 ... 4 5 6 7
8页
当前第1页 1 2 3 4 ... 8
当前第2页 1 2 3 4 5 ... 8
当前第3页 1 2 3 4 5 6 ... 8
当前第4-5页 1 2 3 4 5 6 7 8
当前第6页 1 ... 3 4 5 6 7 8
当前第7页 1 ... 4 5 6 7 8
当前第8页 1 ... 5 6 7 8
9页
当前第1页 1 2 3 4 ... 9
当前第2页 1 2 3 4 5 ... 9
当前第3页 1 2 3 4 5 6 ... 9
当前第4页 1 2 3 4 5 6 7 ... 9
当前第5页 1 2 3 4 5 6 7 8 9
当前第6页 1 ... 3 4 5 6 7 8 9
当前第7页 1 ... 4 5 6 7 8 9
当前第8页 1 ... 5 6 7 8 9
当前第9页 1 ... 6 7 8 9
10页
当前第1页 1 2 3 4 ... 10
当前第2页 1 2 3 4 5 ... 10
当前第3页 1 2 3 4 5 6 ... 10
当前第4页 1 2 3 4 5 6 7 ... 10
当前第5页 1 2 3 4 5 6 7 8 ... 10
当前第6页 1 ... 3 4 5 6 7 8 9 10
当前第7页 1 ... 4 5 6 7 8 9 10
当前第8页 1 ... 5 6 7 8 9 10
当前第9页 1 ... 6 7 8 9 10
当前第10页 1 ... 7 8 9 10
11页
当前第1页 1 2 3 4 ... 11
当前第2页 1 2 3 4 5 ... 11
当前第3页 1 2 3 4 5 6 ... 11
当前第4页 1 2 3 4 5 6 7 ... 11
当前第5页 1 2 3 4 5 6 7 8 ... 11
当前第6页 1 ... 3 4 5 6 7 8 9 ... 11
当前第7页 1 ... 4 5 6 7 8 9 10 11
当前第8页 1 ... 5 6 7 8 9 10 11
当前第9页 1 ... 6 7 8 9 10 11
当前第10页 1 ... 7 8 9 10 11
当前第11页 1 ... 8 9 10 11
12页
当前第1页 1 2 3 4 ... 12
当前第2页 1 2 3 4 5 ... 12
当前第3页 1 2 3 4 5 6 ... 12
当前第4页 1 2 3 4 5 6 7 ... 12
当前第5页 1 2 3 4 5 6 7 8 ... 12
当前第6页 1 ... 3 4 5 6 7 8 9 ... 12
当前第7页 1 ... 4 5 6 7 8 9 10 ... 12
当前第8页 1 ... 5 6 7 8 9 10 11 12
当前第9页 1 ... 6 7 8 9 10 11 12
当前第10页 1 ... 7 8 9 10 11 12
当前第11页 1 ... 8 9 10 11 12
当前第12页 1 ... 9 10 11 12
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="${page.totalPages > 1}">
<div class="pagination">
<%-- first and previous --%>
<c:choose>
<c:when test="${page.pageNumber == 1 }">
<span class="firstPage"></span>
</c:when>
<c:otherwise>
<a class="firstPage" href="javascript:$.pageSkip(1)"></a>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.pageNumber > 1}">
<a class="previousPage" href="javascript:$.pageSkip(${page.pageNumber - 1 })"></a>
</c:when>
<c:otherwise>
<span class="previousPage"></span>
</c:otherwise>
</c:choose>
<%-- first and previous --%>
<%-- segment --%>
<c:choose>
<c:when test="${page.pageNumber <= 5 }">
<c:forEach var="i" begin="1" end="${page.pageNumber}">
<c:choose>
<c:when test="${page.pageNumber == i }">
<span class="currentPage">${page.pageNumber}</span>
</c:when>
<c:otherwise>
<a href="javascript:$.pageSkip(${i })">${i }</a>
</c:otherwise>
</c:choose>
</c:forEach>
</c:when>
<c:otherwise>
<span class="pageBreak">...</span>
<c:forEach var="i" begin="${page.pageNumber - 3}" end="${page.pageNumber}">
<c:choose>
<c:when test="${page.pageNumber == i }">
<span class="currentPage">${page.pageNumber}</span>
</c:when>
<c:otherwise>
<a href="javascript:$.pageSkip(${i })">${i }</a>
</c:otherwise>
</c:choose>
</c:forEach>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.pageNumber >= page.totalPages - 4 || page.totalPages - 4 <= 0}">
<c:forEach var="i" begin="${page.pageNumber + 1}" end="${page.totalPages}">
<a href="javascript:$.pageSkip(${i })">${i }</a>
</c:forEach>
</c:when>
<c:otherwise>
<c:forEach var="i" begin="${page.pageNumber + 1}" end="${page.pageNumber + 3}">
<a href="javascript:$.pageSkip(${i })">${i }</a>
</c:forEach>
<span class="pageBreak">...</span>
<a href="javascript:$.pageSkip(${page.totalPages })">${page.totalPages}</a>
</c:otherwise>
</c:choose>
<%-- segment --%>
<%-- next and last --%>
<c:choose>
<c:when test="${page.pageNumber == page.totalPages }">
<span class="nextPage"></span>
</c:when>
<c:otherwise>
<a class="nextPage" href="javascript:$.pageSkip(${page.pageNumber + 1 })"></a>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.pageNumber < page.totalPages }">
<a class="lastPage" href="javascript:$.pageSkip(${page.totalPages })"></a>
</c:when>
<c:otherwise>
<span class="lastPage"></span>
</c:otherwise>
</c:choose>
<%-- next and last --%>
</div>
实现方案:
总页数page.totalPages
当前页码page.pageNumber
(1)当只有一页时不显示分页
(2)中间页码显示
如果page.pageNumber<=5,从2显示至page.pageNumber
如果page.pageNumber>5,显示省略号,然后从page.pageNumber-3显示至page.pageNumber
如果page.pageNumber<=page.totalPages-4或者page.totalPages-4<=0,从page.pageNumber+1显示至page.totalPages
如果page.pageNumber>page.totalPages-4,从page.pageNumber+1显示至page.pageNumber+3,然后显示省略号和page.totalPages
效果: