Jsp 如何只使用jstlc:ForEach而不使用javascript或jquery进行分页?

Jsp 如何只使用jstlc:ForEach而不使用javascript或jquery进行分页?,jsp,pagination,jstl,Jsp,Pagination,Jstl,我听说可以只使用JSTL分页。我看到并尝试了许多代码示例,但都没有给出任何好的结果。我尝试了这个返回空白页的代码。到目前为止,下面的代码是我拥有的,它正在工作,但我如何显示下一个和上一个 <c:forEach var="product" items="${categoryProducts}" begin="1" end="8" varStatus="iter"> <div class="product_container"> <div class="pro

我听说可以只使用JSTL分页。我看到并尝试了许多代码示例,但都没有给出任何好的结果。我尝试了这个返回空白页的代码。到目前为止,下面的代码是我拥有的,它正在工作,但我如何显示下一个和上一个

<c:forEach var="product" items="${categoryProducts}" begin="1" end="8" varStatus="iter">
<div class="product_container">

    <div class="product_img">
        <a href="viewProduct?${product.id}">    <img class="product_picture" alt="" src="${initParam.productGalleryImagePath}${product.id} (1).jpg" /></a>
    </div>


    <div class="product_name">
        <a href="viewProduct?${product.id}">${product.name}</a>
    </div>


    <div class="product_price">

        <a href="viewProduct?${product.id}">$${product.price}</a>

    </div>

</div>
</c:forEach>

<div class="pagination">
     <c:if test="${product.start > 1}">
 NEXT
</c:if>
<c:if test="${product.end} < ${fn:length(product)}">
 PREVIOUS
</c:if>
</div>

下一个
以前的
里克斯代码:

   <c:set var="product" scope="session" value="${categoryProducts}"/>
<c:set var="totalCount" scope="session" value="${categoryProducts}"/>
<c:set var="perPage" scope="session"  value="10"/>
<c:set var="pageStart" value="${param.start}"/>
<c:if test="${empty pageStart or pageStart < 0}">
       <c:set var="pageStart" value="0"/>
</c:if>
<c:if test="${totalCount < pageStart}">
       <c:set var="pageStart" value="${pageStart - 10}"/>
</c:if>
    <a href="category.jsp?start=${pageStart - 10}">Previous</a>${pageStart + 1} - ${pageStart + 10} 
    <a href="category.jsp?start=${pageStart + 10}">Next</a>  

${pageStart+1}-${pageStart+10}

这里是一个演示

<%@ page import="java.util.*" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%
   List<String> letters = Arrays.asList("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
%>
<c:set var="letters" scope="session" value="<%=letters%>"/>
<c:set var="totalCount" scope="session" value="<%=letters.size()%>"/>
<c:set var="perPage" scope="session"  value="10"/>
<c:set var="pageStart" value="${param.start}"/>
<c:if test="${empty pageStart or pageStart < 0}">
       <c:set var="pageStart" value="0"/>
</c:if>
<c:if test="${totalCount < pageStart}">
       <c:set var="pageStart" value="${pageStart - 10}"/>
</c:if>
    <a href="?start=${pageStart - 10}"><<</a>${pageStart + 1} - ${pageStart + 10} 
    <a href="?start=${pageStart + 10}">>></a>                                               
<h1>Letters</h1>
   <c:forEach var="letter" items="${letters}" varStatus="letterCounter"
                        begin="${pageStart}" end="${pageStart + perPage - 1}">
              ${letter}
   </c:forEach>

信件
${letter}
编辑:

categoryProducts是什么类型的对象?
你需要找到它的大小。您可以尝试添加

<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>

并尝试使用

<c:set var="totalCount" scope="session" value="${fn:length(categoryProducts)}"/>

编辑2:

<%@ page import="java.util.*" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%
   List<String> letters = Arrays.asList("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
%>
<c:set var="letters" scope="session" value="<%=letters%>"/>
<c:set var="totalCount" scope="session" value="<%=letters.size()%>"/>
<c:set var="perPage" scope="session"  value="${5}"/>
<c:set var="pageStart" value="${param.start}"/>
<c:if test="${empty pageStart or pageStart < 0}">
       <c:set var="pageStart" value="0"/>
</c:if>
<c:if test="${totalCount < pageStart}">
       <c:set var="pageStart" value="${pageStart - perPage}"/>
</c:if>
    <a href="?start=${pageStart - perPage}"><<</a>${pageStart + 1} - ${pageStart + perPage} 
    <a href="?start=${pageStart + perPage}">>></a>                                               
<h1>Letters</h1>
   <c:forEach var="letter" items="${letters}" 
                        begin="${pageStart}" end="${pageStart + perPage - 1}">
              ${letter}
   </c:forEach>

信件
${letter}

看看这是否有帮助。您可以这样调用页面:

pagination.jsp?start=1&end=72

pagination.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head><title>pagination</title>
<body>
<c:set var="count" value="${0}" scope="page" />
<c:set var="start" value="${0}" scope="page" />
<c:set var="startcount" value="${param.start}" scope="page" />

<c:set var="endcount" value="${param.end}" scope="page" />
<c:set var="allend" value="${72}" scope="page" />
<c:set var="stepcount" value="${1}" scope="page" />

<c:if test="${endcount>allend}">
 <c:set var="endcount" value="${allend}" scope="page" />
</c:if>
<c:forEach var="counter" begin="${startcount}" end="${endcount}" step="${stepcount}">
 <c:if test="${count < 24}">
  ${counter}<br/>
 <c:set var="count" value="${count + 1}" scope="page" />
 <c:set var="end" value="${counter+count-1}" scope="page" />
 <c:set var="start" value="${counter}" scope="page" />
 </c:if>
</c:forEach>
<c:if test="${endcount>allend}">
 <c:set var="start" value="${1}" scope="page" />
 <c:set var="end" value="${allend}" scope="page" />
</c:if>


<c:if test="${endcount!=allend}">
<a href="pagination.jsp?start=${(count==1)?1:start}&end=${end}">NEXT</a>&nbsp;&nbsp;&nbsp;
</c:if>
<c:if test="${startcount>24-1}">
 <a href="pagination.jsp?start=${startcount-24+1}&end=${startcount}">PREVIOUS</a>
</c:if>
</body>
</html>  

标页码
${counter}

您希望每页显示多少产品?@PaulNgom:24个产品每页。谢谢您的回答。初学者问题:为什么要调用
数组
?我认为这正是每个的
的目的?我使用Arrays类(以及它的静态方法asList)来创建我的列表。我需要一些东西来演示我的代码。你不需要使用它,因为你已经有了categoryProducts。我刚才试过你的代码。除了链接之外,它还能工作。单击“下一步”或“上一步”时,我收到以下错误:
java.lang.NumberFormatException:对于输入字符串:“start=10”
我发布的代码对我有效。您是否复制并粘贴到服务器上的jsp文件中?如果您编写了新代码,请发布。@请查看与我的代码相适应的代码更新。你觉得我做的有什么问题吗?谢谢你的回答。初学者问题:当你说你调用页面时,你的意思是什么?我需要创建另一个jsp?您不需要创建另一个jsp。您只需复制并保存名为pagination.jsp的代码,然后将文件复制到服务器。然后可以从浏览器中显示它。别忘了将pagination.jsp?start=1&end=72附加到地址我刚才尝试并修改了您的代码(参见编辑),奇怪的是,现在只显示一个产品,当我点击链接时,我得到404错误
:/