2011-04-19 111 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