Skip to content

Instantly share code, notes, and snippets.

@virgium03
Last active August 29, 2015 14:15
Show Gist options
  • Save virgium03/ed0c01d6c5862d557a57 to your computer and use it in GitHub Desktop.
Save virgium03/ed0c01d6c5862d557a57 to your computer and use it in GitHub Desktop.
Pagination for JSPs using Spring Data
<c:set var="page" scope="request" value="${it.number + 1}"/>
<c:set var="size" scope="request" value="${it.size}"/>
<c:set var="maxPages" scope="request" value="${it.totalPages}"/>
<c:if test="${it.number lt 0 or it.totalElements le 0 or it.totalPages le 0}">
<c:set var="page" value="0"/>
<c:set var="size" value="0"/>
<c:set var="maxPages" value="0"/>
</c:if>
<c:if test="${empty size || size lt 1}">
<c:set var="size" value="25"/>
</c:if>
<spring:message code="results_per_page" text="Results per page"/>
<c:out value=" "/>
<c:forEach var="i" begin="5" end="25" step="5">
<c:choose>
<c:when test="${size == i}">
<c:out value="${i}"/>
</c:when>
<c:otherwise>
<spring:url value="/documents" var="sizeUrl">
<c:forEach var="parameter" items="${paramValues}">
<c:if test="${parameter.key ne 'page' and parameter.key ne 'pageSize'}">
<spring:param name="${parameter.key}" value="${parameter.value[0]}"/>
</c:if>
</c:forEach>
<spring:param name="page" value="1"/>
<spring:param name="pageSize" value="${i}"/>
</spring:url>
<a href="${sizeUrl}">${i}</a>
</c:otherwise>
</c:choose>
<c:out value=" "/>
</c:forEach>
<c:out value="| "/>
<c:if test="${page ne 1 and page gt 0}">
<spring:url value="/documents" var="first">
<c:forEach var="parameter" items="${paramValues}">
<c:if test="${parameter.key ne 'page' and parameter.key ne 'pageSize'}">
<spring:param name="${parameter.key}" value="${parameter.value[0]}"/>
</c:if>
</c:forEach>
<spring:param name="page" value="1"/>
<spring:param name="pageSize" value="${size}"/>
</spring:url>
<spring:message code="first_page" text="First page" var="first_label"/>
<a class="image" href="${first}" title="${first_label}">
<i class="icon-fast-backward"></i>
</a>
</c:if>
<c:if test="${page gt 1}">
<spring:url value="/documents" var="previous">
<c:forEach var="parameter" items="${paramValues}">
<c:if test="${parameter.key ne 'page' and parameter.key ne 'pageSize'}">
<spring:param name="${parameter.key}" value="${parameter.value[0]}"/>
</c:if>
</c:forEach>
<spring:param name="page" value="${page - 1}"/>
<spring:param name="pageSize" value="${size}"/>
</spring:url>
<spring:message code="previous_page" text="Previous page" var="previous_label"/>
<a class="image" href="${previous}" title="${previous_label}">
<i class="icon-chevron-left"></i>
</a>
</c:if>
<c:out value=" "/>
<spring:message code="page_position" text="Page ${page} out of ${maxPages}" arguments="${page},${maxPages}" argumentSeparator=","/>
<c:out value=" "/>
<c:if test="${page lt maxPages}">
<spring:url value="/documents" var="next">
<c:forEach var="parameter" items="${paramValues}">
<c:if test="${parameter.key ne 'page' and parameter.key ne 'pageSize'}">
<spring:param name="${parameter.key}" value="${parameter.value[0]}"/>
</c:if>
</c:forEach>
<spring:param name="page" value="${page + 1}"/>
<spring:param name="pageSize" value="${size}"/>
</spring:url>
<spring:message code="next_page" text="Next page" var="next_label"/>
<a class="image" href="${next}" title="${next_label}">
<i class="icon-chevron-right"></i>
</a>
</c:if>
<c:if test="${page ne maxPages}">
<spring:url value="/documents" var="last">
<c:forEach var="parameter" items="${paramValues}">
<c:if test="${parameter.key ne 'page' and parameter.key ne 'pageSize'}">
<spring:param name="${parameter.key}" value="${parameter.value[0]}"/>
</c:if>
</c:forEach>
<spring:param name="page" value="${maxPages}"/>
<spring:param name="pageSize" value="${size}"/>
</spring:url>
<spring:message code="last_page" text="Last page" var="last_label"/>
<a class="image" href="${last}" title="${last_label}">
<i class="icon-fast-forward"></i>
</a>
</c:if>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment