Не проверено, но это должно работать:
<c:set var="p" value="${page}" /> <%-- current page --%>
<c:set var="l" value="5" /> <%-- amount of page links to be displayed --%>
<c:set var="r" value="2" /> <%-- minimum link range ahead/behind --%>
<c:set var="t" value="${pageCount}" /> <%-- total amount of pages --%>
<c:set var="begin" value="${t > l ? ((p - r) > 1 ? (p - r): 1): 1}"/>
<c:set var="end" value="${t > l ? ((p + r) > t ? t: (p + r)): t}"/>