JSP ページにページネーションを実装しようとしています。Spring MVC と Hibernate を使用しています。Java コードの部分は問題ありませんが、JSP ページに実装するのに苦労しています。Twitterのブートストラップを使用しています。
これが私が今までやったことです:
<div class="container">
<table class="table table-hover">
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
<c:forEach items="${employees}" var="emp">
<tr>
<td>${emp.firstName}</td>
<td>${emp.lastName}</td>
<td>${emp.Age}</td>
</tr>
</c:forEach>
</table>
<div class="pagination">
<ul>
<li class="disabled"><a href="#">First</a></li>
<li class="disabled"><a href="#">Prev</a></li>
<li class="active"><a href="#">1</a></li>
<li class="active"><a href="#">2</a></li>
<li class="active"><a href="#">3</a></li>
<li class="active"><a href="#">4</a></li>
<li class="active"><a href="#">5</a></li>
<li class="active"><a href="#">Next</a></li>
<li class="active"><a href="#">Last</a></li>
</ul>
</div>
</div>
これは私のコントローラーの関連コードです:
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String getEmployees(ModelMap model) {
**//I believe I should get the page number from the JSP here but how?**
model.addAttribute("employees", this.employeeService.getEmployees(page));
return "listing";
}
これは、私の Service クラスの関連コードです。
public List<Employee> getEmployees(int page) {
return employeeDao.getEmployeeList(page);
}
これは、私の DAO クラスの関連コードです。
private static final int limitResultsPerPage = 3;
public List<Employee> getEmployeeList(int page) {
Query q = sessionFactory.getCurrentSession().createQuery(
"from Employee");
q.setFirstResult(page * limitResultsPerPage);
q.setMaxResults(limitResultsPerPage);
return (List<Employee>) q.list();
}
そのテーブルを表示しているページは list.jsp です
これが私が何をすべきかについての私の仮定ですが、方法がわかりません(間違った方法をとっている場合は修正してください):
メニューの list.jsp を指すリンクを list.jsp?page=0 に変更して、ユーザーがリンクをクリックするたびに最初のページに到達するようにします。
ユーザーがボタンの 1 つをクリックすると、クエリで適切な「従業員」を返すことができるように、ページ番号をコントローラーに渡す必要があります。
ご覧のとおり、現在最初のページにいるため、最初のボタンと前のボタンは無効になっています。私の質問は、これらのボタンのアクティブ化/非アクティブ化、および次と最後のボタンをどのように処理すればよいですか?
また、リストの数字を「更新」する方法は? たとえば、ユーザーが 20 ページにいる場合、1 から 19 までのボタンは表示されませんか?