JSP - help in creating a fixed number of paginated links

my pagination works well, but I can't figure out how to create a fixed number of page links. For example, I need to have 5 fixed links this way: 1 - 2 - 3 - 4 - 5> if I click on the third page, I will always see 5 links: <3 - 4 - 5 - 6 - 7>

Now with my algorithm, I can only generate all the links, but I have no idea how to create what I explained above. This is my code (only for href generation):

<div class="pageBoxRight"> <c:if test="${param.pageNumber > 1}"> <a href="javascript: previousRecords();" class="previous"><em>previous</em></a> </c:if> <c:forEach var="i" begin="1" end="${tot + 1}" step="1" varStatus ="status"> <a href="javascript: goToPage(${i});" id="paginator${i}" class="pageNumber"><span class="pageNumberRight">${i}</span></a> </c:forEach> <c:if test="${param.pageNumber < tot}"> <a href="javascript: nextRecords();" class="next"><em>next</em></a> </c:if> </div> 

Can someone help me? Thank you very much.

+4
source share
1 answer

This is getting complicated.

 <c:set var="p" value="${param.pageNumber}" /> <%-- current page (1-based) --%> <c:set var="l" value="5" /> <%-- amount of page links to be displayed --%> <c:set var="r" value="${l / 2}" /> <%-- minimum link range ahead/behind --%> <c:set var="t" value="${tot}" /> <%-- total amount of pages --%> <c:set var="begin" value="${((p - r) > 0 ? ((p - r) < (t - l + 1) ? (p - r) : (t - l)) : 0) + 1}" /> <c:set var="end" value="${(p + r) < t ? ((p + r) > l ? (p + r) : l) : t}" /> <c:forEach begin="${begin}" end="${end}" var="page"> ${page}... </c:forEach> 
+8
source

Source: https://habr.com/ru/post/1333171/


All Articles