2011-04-19 110 views
2

我有一个页面,它显示一个表格,其中包含一些首次从JPA实体列表形式的方法中获取的条目。如何在JSP中进行分页?

现在我有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

您应该修改您的showDetails方法以接受两个参数:pageNumber,resultsPerPage

然后你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

什么Behrang回答是神话般的内在工作。

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

+0

另一种选择是jmesa,极端的继承者 - http://code.google.com/p/jmesa/ – 2011-04-19 11:07:05