我正在尝试在我的 JSP 页面中实现分页。我正在使用 Spring MVC 和 Hibernate。java 代码部分没问题,但我在我的 JSP 页面中实现它时遇到了困难。我正在使用推特引导程序。
这是我到目前为止所做的:
<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";
}
这是我的服务类中的相关代码:
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,这样用户每次点击链接时,都会到达第一页。
当用户单击其中一个按钮时,我需要将页码传递给我的控制器,以便我可以设法通过查询返回正确的“员工”。
如您所见,第一个和上一个按钮已停用,因为我目前在第一页上。所以我的问题是,我应该如何处理这些按钮以及下一个和最后一个按钮的激活/停用?
另外,如何“刷新”列表中的数字?例如,如果用户在第 20 页,我不会显示从 1 到 19 的按钮?