如何在JSP中进行分页?

时间:2011-04-19 06:50:10

标签: jsp jpa

我有一个页面显示一个表格,其中包含一些条目,这些条目首次从JPA实体的列表形式中获取。

现在我有3个按钮:上一个接受下一个

我想要的是当我点击下一个或上一个按钮时,它应显示上一个/下一个条目。

这里有一些代码片段:

<%!
 Request req=new Request();
 List<pendingRequest> li= req.showDetails();
 int i=0;
 pendingRequest pr=null; %>
<%pr=li.get(i); %>
 <table align="center">
<tr><td><b>Employee Id  :</b></td><td><%=pr.getEmpId()%></td></tr>
<tr><td><b>Name         :</b></td><td><%=pr.getEmpName()%></td></tr>
<tr><td><b>Phone Number :</b></td><td><%=pr.getEmpPhnNo()%></td></tr>
<tr><td><b>Email Id     :</b></td><td><%=pr.getEmpEmail()%></td></tr>
<tr><td><b>Password     :</b></td><td><%=pr.getEmpPassword()%></td></tr>
</table><br><br>

<table align="center">
<tr><td>
<input type="button" value="Previous" onclick="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="Accept" onclick="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="Next" onclick="">
</td></tr>
</table>

有人可以帮助我,我该如何继续使它成为可能?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您应修改showDetails方法以接受两个参数:pageNumberresultsPerPage

然后在你的showDetails方法中,您将拥有以下内容:

/**
 * <code>pageNumber</code> starts from 0
 */
public List<PendingRequest> showDetails(int pageNumber, int resultsPerPage)
{
 Query q = ...
 q.setFirstResult(pageNumber * resultsPerPage);
 q.setMaxResults(resultsPerPage);
 ...
 return q.getResultList();
}

在页面顶部设置页码:

<%
  int pageNumber = request.getParameter("pageNumber") == null ? 0 : Integer.parseInt(request.getParameter("pageNumber"));
%>

使用链接更改NextPrevious输入(假设您的JSP文件名为list.jsp):

<a href="list.jsp?pageNumber=<%= pageNumber + 1 %>">Next</a>
<a href="list.jsp?pageNumber=<%= pageNumber - 1 %>">Previous</a>

这需要稍微调整一下(例如,确保pageNumber永远不会小于0),但总的来说这是你可以采取的方法。

答案 1 :(得分:1)

Behrang所回答的是内心深处的工作。

或者,如果您尝试重新发明轮子,可以使用displaytag.sf.net/。 displaytag还允许用户将表格导出为pdf和excel格式,因此在某些情况下您无需为报告编写额外的代码。