如何将下一个/上一个按钮添加到此代码段,因为您可以看到,它将显示所需数量的链接,因此如果您有大量页面,那么这可能不是最佳解决方案
<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>
CSS:
.pagination .current {
background: #26B;
border: 1px solid #226EAD;
color: white;
}
.pagination a {
display: block;
border: 1px solid #226EAD;
color: #15B;
text-decoration: none;
float: left;
margin-bottom: 5px;
margin-right: 5px;
padding: 0.3em 0.5em;
}
.pagination {
font-size: 80%;
float: right;
}
div {
display: block;
}
这是我使用当前代码得到的: 这就是我想要显示的内容,如果可能的话省略省略号
希望你能帮助我。
答案 0 :(得分:2)
这应该是相当直接的,但请记住,如果你在第一页,你可能不想显示Prev,如果你在最后一页,你可能不想显示。
以下是Prev / Next链接的示例。在forEach上面添加第一个if块,在它下面添加第二个if块。
<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>
这更复杂,因为它需要一个算法而不是我建议你单独使用JSP EL和/或JSTL(因为你可能不得不使用scriptlet而这些都是坏消息)。在过去,我使用了PaginationHelper
bean类和JSP 2.0标记文件来完成这种分页方式。
创建一个名为PaginationPage
的类,它具有整数页码和字符串标签。让PaginationHelper
处理计算页面的所有逻辑,并让它返回PaginationPages
的标记列表。然后标签只需要遍历页面并按照你想要的方式输出它们。
以下是实现这种分页方式时需要考虑的一些逻辑:
不同的应用程序实现这些规则有点不同。请随意查看其他应用程序的源代码,看看他们遵循的规则。
答案 1 :(得分:0)
看起来你非常接近...... 你有没有看过用while()循环替换你的foreach()?
[PREV] [1] [2]
while starting at 3 and ending at Total - 2
[LAST 2] [results] [NEXT].
您也可以使用条件语句处理省略号(您不希望它们一直出现 - (即Prev 1,2 ... 3,4,5 ... 6,7,Next)
我在PHP中完成了这个问题,但我不想将其粘贴到JSP q / a中。 (我跳了一下枪)。您似乎能够以不同的视角回答您自己的问题。
答案 2 :(得分:0)
在思考了一段时间后,我想出了一项工作来完成这项工作。它真的不是很优雅,但它完成了工作。这是代码。
<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>
真的希望别人觉得它有用!