如何在分页中显示有限的页面链接?

时间:2018-12-22 09:34:40

标签: java spring jsp pagination

我在Web应用程序中使用了分页功能,效果很好。但是它显示了所有页面链接。在单击“下一步”按钮后,我只希望在分页中显示5页,在接下来的页面中显示。

我想要这样的东西

enter image description here

pagin.jsp

<nav aria-label="Page navigation example">
    <ul class="pagination">
        <c:url value="/list" var="first">
            <c:param name="page" value="1" />
        </c:url>
        <c:url value="/list" var="prev">
            <c:param name="page" value="${page-1}" />
        </c:url>
        <c:if test="${page > 1}">
            <li class="page-item"><a class="page-link"
                href="<c:out value="${first}" />">First</a></li>
            <li class="page-item"><a class="page-link"
                href="<c:out value="${prev}" />">Prev</a></li>
        </c:if>

        <c:forEach begin="${begin}" end="${end}" step="1" varStatus="i">
            <c:choose>
                <c:when test="${page == i.index}">

                    <li class="page-item"><span class="page-link"
                        style="background-color: blue">${i.index}</span></li>
                </c:when>
                <c:otherwise>
                    <c:url value="/list" var="url">
                        <c:param name="page" value="${i.index}" />
                    </c:url>
                    <li class="page-item"><a class="page-link"
                        href='<c:out value="${url}" />'>${i.index}</a></li>
                </c:otherwise>
            </c:choose>
        </c:forEach>

        <c:url value="/list" var="last">
            <c:param name="page" value="${maxPages}" />
        </c:url>
        <c:url value="/list" var="next">
            <c:param name="page" value="${page + 1}" />
        </c:url>
        <c:if test="${page + 1 <= maxPages}">
            <li class="page-item"><a class="page-link"
                href='<c:out value="${next}" />'>Next</a></li>
            <li class="page-item"><a class="page-link"
                href='<c:out value="${last}" />'>Last</a></li>
        </c:if>
    </ul>
</nav>

请告诉我该怎么做。

1 个答案:

答案 0 :(得分:1)

我的问题解决了。我这样计算控制器的开始和结束。

    int showpage = 5; 
    int maxpages = pagedListHolder.getPageCount();
    int begin,end;
    int lastcount = maxpages%showpage; // number of pages above maxpages % 5
    int last = maxpages - lastcount;

    if (page <= maxpages) {
        if (page < showpage-2) {
            begin = 1;
            end = showpage;
            System.out.println("condition 1");
            modelAndView.addObject("begin", begin);
            modelAndView.addObject("end", end);
        }else if(page == maxpages){
            begin = maxpages-showpage;
            end = maxpages;
            System.out.println("condition 2");
            modelAndView.addObject("begin", begin);
            modelAndView.addObject("end", end);
        } 
        else if(page > maxpages - 3){
            begin = page - 3;
            end = maxpages;
            System.out.println("condition 3");
            modelAndView.addObject("begin", begin);
            modelAndView.addObject("end", end);
        } else {
            int count = (page / showpage)+2;
            begin = page - 2;
            end = page + 3;
            System.out.println("condition 4");
            modelAndView.addObject("begin", begin);
            modelAndView.addObject("end", end);
        }
    }