Jsp 如何将“下一步”和“上一步”按钮添加到我的寻呼机行

Jsp 如何将“下一步”和“上一步”按钮添加到我的寻呼机行,jsp,jstl,Jsp,Jstl,我该如何将“下一步/上一步”按钮添加到此代码段中,因为正如您所看到的,它将根据需要显示尽可能多的链接,因此如果您有大量页面,那么这可能不是最佳解决方案 <c:choose> <c:when test="${pages >1}"> <div class="pagination art-hiddenfield" > <c:forEach var="i" begin="1"end="${pages}" s

我该如何将“下一步/上一步”按钮添加到此代码段中,因为正如您所看到的,它将根据需要显示尽可能多的链接,因此如果您有大量页面,那么这可能不是最佳解决方案

 <c:choose>
   <c:when test="${pages >1}">
        <div class="pagination art-hiddenfield" >
             <c:forEach var="i" begin="1"end="${pages}" step="1">
                  <c:url value="MaintenanceListVehicles.htm" var="url">
                      <c:param name="current" value="${i}"/>                
                  </c:url>
                  <c:if test="${i==current}">
                       <a href="<c:out value="${url}"/> " class="current" >
                           <c:out value="${i}" /></a>
                  </c:if>
                  <c:if test="${i!=current}">
                       <a href="<c:out value="${url}"/> " >
                           <c:out value="${i}" /></a>
                  </c:if>
              </c:forEach>
         </div>
    </c:when>
    <c:otherwise>
       <div align="center">                   
       </div>
    </c:otherwise>
</c:choose>
这是我使用当前代码得到的结果: 这就是我想展示的,如果可能的话,用省略号


希望你能帮助我。

看起来你很接近。。。 您是否考虑过将foreach()替换为while()循环

您也可以使用条件语句处理省略号(您不希望它们一直出现-(即上一个1,2…3,4,5…6,7,下一个)

我已经在PHP中完成了这项工作,但我不想将其粘贴到JSP q/a中(我有点跳了)。看起来您可以从不同的角度来回答自己的问题。

添加上一个/下一个链接 这应该是相当直截了当的,但是请记住,如果您在第一页,您可能不想显示Prev,如果您在最后一页,您可能不想显示Next

上一个/下一个示例 下面是上一个/下一个链接的示例。将第一个if块添加到forEach上面,第二个添加到forEach下面

<c:if test="${currentPage > 1}">
    <c:url value="MaintenanceListVehicles.htm" var="prevUrl">
        <c:param name="current" value="${currentPage - 1}"/>                
    </c:url>
    <a href="<c:out value="${prevUrl}"/>">Prev</a>
</c:if>

<c:if test="${maxPages > currentPage}">
    <c:url value="MaintenanceListVehicles.htm" var="nextUrl">
        <c:param name="current" value="${currentPage + 1}"/>                
    </c:url>
    <a href="<c:out value="${nextUrl}"/>">Next</a>
</c:if>

显示省略号 这更复杂,因为它需要一个算法,我不建议您单独使用JSPEL和/或JSTL(因为您可能不得不使用Scriptlet,而这些都是坏消息).在过去,我使用了
PaginationHelper
bean类和JSP 2.0标记文件来完成这种分页风格

创建一个名为
PaginationPage
的类,该类具有整数页码和字符串标签。让
PaginationHelper
处理计算页面的所有逻辑,并让它将
PaginationPages
的列表返回给标记。然后标记只需在页面上迭代,并按您的喜好输出它们。

分页逻辑

这里是您实现这种分页样式时要考虑的一些逻辑:

  • 如果少于10页,则只显示所有页面
  • 如果当前页码接近1,则不显示左侧省略号
  • 显示当前页面及其前后的三个页面。例如,如果当前页面为14,则显示11、12、13、14、15、16、17。您可以对此进行调整以显示多于/少于三个页面,但每侧的页面数应相同
  • 如果当前页码接近总页数,请不要显示右侧省略号
  • 省略号链接应该表示围绕它的两个页面之间的中点。以您的屏幕截图为例,第一个省略号将用于第4页((9-2)/2=3.5),第二个省略号将用于第22页((61-18)/2=21.5)

不同的应用程序执行这些规则的方式有点不同。请随意查看其他应用程序的源代码,看看它们遵循了哪些规则。

经过一段时间的思考,我想出了一个解决方案来实现这一点。这确实不是很优雅,但它完成了任务。下面是代码

   <c:choose>
        <c:when test="${pages>1}">
            <div class="pagination">
                <c:if test="${current > 1}">
                    <c:url value="MaintenanceListVehicles.htm" var="prevUrl">
                        <c:param name="current" value="${current - 1}"/>                           
                    </c:url>
                    <a href="<c:out value="${prevUrl}"/>">Prev</a>
                </c:if>
                <c:set var="begin" value="1" />
                <c:set var="end" value="9" />
                <c:choose>
                    <c:when test="${current-4<=1}">
                        <c:if test="${pages< 9}">
                            <c:set var="end" value="${pages}" />
                        </c:if>
                    </c:when>
                    <c:otherwise>
                        <c:set var="begin" value="${current - 4}" />
                        <c:set var="end" value="${begin + 8}" />
                        <c:if test="${end >=pages}">
                            <c:set var="begin" value="1" />
                            <c:set var="end" value="${pages}" />
                            <c:if test="${pages> 9}">
                                <c:set var="begin" value="${pages- 8}" />
                            </c:if>
                        </c:if>
                    </c:otherwise>
                </c:choose>
                <c:forEach var="i" begin="${begin}" end="${end}" step="1">
                    <c:url value="MaintenanceListVehicles.htm" var="url">
                        <c:param name="current" value="${i}"/>                          
                    </c:url>
                    <c:choose>
                        <c:when test="${i==current}">
                            <a href="<c:out value="${url}"/> " class="current" >
                                <c:out value="${i}" /></a>
                        </c:when>
                        <c:otherwise>
                            <a href="<c:out value="${url}"/> " >
                                <c:out value="${i}" /></a>
                        </c:otherwise>   
                    </c:choose>
                </c:forEach>
                <c:if test="${pages> current}">
                    <c:url value="MaintenanceListVehicles.htm" var="nextUrl">
                        <c:param name="current" value="${current + 1}"/>                          
                    </c:url>
                    <a href="<c:out value="${nextUrl}"/>">Next</a>
                </c:if>
            </div>
        </c:when>
        <c:otherwise>
            <div align="center">
            </div>
        </c:otherwise>
    </c:choose>


真的希望其他人会觉得它有用!

你能给我更多的线索吗?:$现在我觉得我应该一起删除我的答案,因为我无法发布JSP代码…好吧,让我们忘记省略号,我唯一需要的是显示上一页/下一页按钮,如这里:,但总是显示固定数量的分页链接,比如说5,是我吗在这一部分,我不知道该做什么:(为什么不直接使用那个插件呢?因为它看起来很复杂,我甚至不知道下载什么:顺便说一句,这就是你建议的插件吗?我指的是d-scribe.de链接。如果你在演示中查看源代码,你可能会找到要下载的内容。我从来没有使用过用于分页的插件。@Steven Benitez-但你说你在过去??你能给出确切的链接吗?因为我想我们谈论的是两件完全不同的事情。还有一件事,你说添加下一步/删除按钮很容易,你能给我一些指导吗?
<c:if test="${currentPage > 1}">
    <c:url value="MaintenanceListVehicles.htm" var="prevUrl">
        <c:param name="current" value="${currentPage - 1}"/>                
    </c:url>
    <a href="<c:out value="${prevUrl}"/>">Prev</a>
</c:if>

<c:if test="${maxPages > currentPage}">
    <c:url value="MaintenanceListVehicles.htm" var="nextUrl">
        <c:param name="current" value="${currentPage + 1}"/>                
    </c:url>
    <a href="<c:out value="${nextUrl}"/>">Next</a>
</c:if>
   <c:choose>
        <c:when test="${pages>1}">
            <div class="pagination">
                <c:if test="${current > 1}">
                    <c:url value="MaintenanceListVehicles.htm" var="prevUrl">
                        <c:param name="current" value="${current - 1}"/>                           
                    </c:url>
                    <a href="<c:out value="${prevUrl}"/>">Prev</a>
                </c:if>
                <c:set var="begin" value="1" />
                <c:set var="end" value="9" />
                <c:choose>
                    <c:when test="${current-4<=1}">
                        <c:if test="${pages< 9}">
                            <c:set var="end" value="${pages}" />
                        </c:if>
                    </c:when>
                    <c:otherwise>
                        <c:set var="begin" value="${current - 4}" />
                        <c:set var="end" value="${begin + 8}" />
                        <c:if test="${end >=pages}">
                            <c:set var="begin" value="1" />
                            <c:set var="end" value="${pages}" />
                            <c:if test="${pages> 9}">
                                <c:set var="begin" value="${pages- 8}" />
                            </c:if>
                        </c:if>
                    </c:otherwise>
                </c:choose>
                <c:forEach var="i" begin="${begin}" end="${end}" step="1">
                    <c:url value="MaintenanceListVehicles.htm" var="url">
                        <c:param name="current" value="${i}"/>                          
                    </c:url>
                    <c:choose>
                        <c:when test="${i==current}">
                            <a href="<c:out value="${url}"/> " class="current" >
                                <c:out value="${i}" /></a>
                        </c:when>
                        <c:otherwise>
                            <a href="<c:out value="${url}"/> " >
                                <c:out value="${i}" /></a>
                        </c:otherwise>   
                    </c:choose>
                </c:forEach>
                <c:if test="${pages> current}">
                    <c:url value="MaintenanceListVehicles.htm" var="nextUrl">
                        <c:param name="current" value="${current + 1}"/>                          
                    </c:url>
                    <a href="<c:out value="${nextUrl}"/>">Next</a>
                </c:if>
            </div>
        </c:when>
        <c:otherwise>
            <div align="center">
            </div>
        </c:otherwise>
    </c:choose>