0

我正在使用 JSTL 中的显示标签来实现 JSP 页面中的分页。我正在寻找以下功能 在此处输入图像描述

当我点击 NEXT / PREV Links 时,它会转到下一页,即如果我在第 2 页,它会转到第 3 页,但我希望如果我单击 Next,页码应该更改为 12、13, 14, 15, 16, 17, 18..(下一组页面)

是否可以在显示标签中实现上述功能???

2)假设如果我有 50 个正在显示的页面,我是否有可能拥有一个用户可以输入页码并单击 go 的功能,那么用户应该能够导航到该给定页面。

完整的分页代码我所拥有的是

<display:table name="webview" id="webviewit" class="grlist" cellspacing="0" cellpadding="0" border="1" pagesize="10" requestURI="">
    <display:column property="size" title="Size" sortable="true"/>
    <display:column property="dateTime" title="Date" sortable="true" class="tableBg"/>
    <display:column property="filename" title="File/Directory" sortable="true" />       
</display:table>
4

2 回答 2

1

最简单的方法,您可以修改TableTag.javadisplay-tag jar 文件中的内容。在这个文件中修改initParameters()方法。在方法内放置以下 4 行代码。在initParameters()方法中的这条线之后。

this.pageNumber = (pageNumberParameter == null) ? 1 : pageNumberParameter.intValue();

放置以下代码

if((request.getParameter("pageno") != null) && (request.getParameter("pageno") != ""))
{
     this.pageNumber=Integer.parseInt(request.getParameter("pageno"))
}     

并在您的页面中使用TextBox名称为 pageno 的a。DisplayTag还包括在您的DisplayTag财产名称excludedparam

于 2013-07-19T05:41:47.597 回答
0

displaytag 的“问题”是它试图在内存中进行分页。这意味着您将在会话中存储所有内容。使用 displaytag 你可以做一些叫做部分列表支持的事情。在这种情况下,您必须发送PaginatedList文档中的列表:

如果作为列表传递给 displaytag 的对象实际上是 org.displaytag.pagination.PaginatedList 的一个实例(而不是一个集合),则 displaytag 将假定列表是外部排序和分页的。实现这个接口是微不足道的,并且可以很容易地在现有类上编写一个适配器。有关更多详细信息,请参阅 org.displaytag.pagination.PaginatedList javadocs。

你会有这样的网址

http://foo.bar.com/context/requestUri?sort=name&dir=asc&page=5&originalParameters=originalValues

有关更多详细信息,请查看文档:

http://www.displaytag.org/1.2/tut_externalSortAndPage.html

如果您不想使用这种技术,您可以使用另一种更自由的替代方法。您可以直接从数据库中获取您想要的内容。看看这个页面(它不是你想要的那样),它会给出一个基本的想法:http://theopentutorials.com/examples/java-ee/jsp/pagination-in-servlet-and-jsp/. 要点是:

  1. 有参数告诉你你在哪个页面:

    if(request.getParameter("page") != null) page = Integer.parseInt(request.getParameter("page"));

  2. 使用该参数,您可以获取正确的数据

    List list = dao.viewAllEmployees((page-1)*recordsPerPage, recordsPerPage); int noOfRecords = dao.getNoOfRecords(); int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage); request.setAttribute("employeeList", list); request.setAttribute("noOfPages", noOfPages); request.setAttribute("currentPage", page);

  3. 然后,在您的 jsp 中,您可以控制导航
    到上一页的链接

    <c:if test="${currentPage != 1}">
        <td><a href="employee.do?page=${currentPage - 1}">Previous</a></td>
    </c:if> 

表格的渲染与您之前的完全一样: <display:table ...> </display:table>

和“下一个”链接

    <c:if test="${currentPage lt noOfPages}">
        <td><a href="employee.do?page=${currentPage + 1}">Next</a></td>
    </c:if>

于 2013-06-03T08:13:39.357 回答