我希望以这种方式显示分页链接:当前页面和3个前进链接以及3个向后链接。
显然,我不希望显示负面页面或最后一页面后的页面的链接。
所以在我的pagination.jsp中我有以下内容:
param.pages
是总页数
没有<c:if test="${page < param.pages} ">
的东西,我正确显示链接,但在param.pages之后没有检查页面。使用c:if,我什么也没显示,我认为这是因为测试无法识别 page
<c:forEach begin="${currentPage + 1 }" end="${currentPage + 3}" var="page">
<c:if test="${page < param.pages} ">
<li><a
href="${pageContext.request.contextPath}/${param.currentURL }/<c:out value="${page }"/>">
<c:out value="${page }"/> </a></li>
</c:if>
</c:forEach>
哪种方式最好?
答案 0 :(得分:1)
我终于发现它,仅使用JSP标签,不知道它是否是最好的解决方案,但是它可以工作,如果有人需要它我会把它写下来。
在我的pagination.jsp
中<c:set var="maxLink" value="4"></c:set> // it's the number of links you want before and after the current one
// this part is to avoid to have negative values in the forEach cycle for the previous links
<c:set var="bottomLimit" value="${param.currentPage - maxLink }"></c:set>
<c:choose>
<c:when test="${bottomLimit <= 0 }">
<c:set var="begin" value="1"></c:set>
</c:when>
<c:otherwise>
<c:set var="begin" value="${bottomLimit }"></c:set>
</c:otherwise>
</c:choose>
<c:forEach begin="${begin }" end="${param.currentPage -1}"
var="pageBefore">
<li><a
href="${pageContext.request.contextPath}/${param.currentURL }/<c:out value="${pageBefore }"/>"><c:out
value="${pageBefore }" /> </a></li>
</c:forEach>
// link to the currentPage
<li class="active"><a
href="${pageContext.request.contextPath}/${param.currentURL }/${param.currentPage}">${param.currentPage }</a></li>
//Link to the next pages, that ends at the last page
<c:set var="end" value="${param.currentPage + maxLink }"></c:set>
<c:forEach begin="${param.currentPage + 1 }" end="${end}" var="page">
<c:if test="${page <= param.pages}">
<li><a
href="${pageContext.request.contextPath}/${param.currentURL }/<c:out value="${page }"/>"><c:out
value="${page }" /> </a></li>
</c:if>
</c:forEach>