在Java中實現分頁功能通常需要使用Controller來處理請求,并在Controller中設置分頁參數。以下是一個簡單的示例代碼來實現分頁功能:
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String getUsersPage(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size,
Model model) {
Pageable pageable = PageRequest.of(page, size);
Page<User> users = userService.getAllUsers(pageable);
model.addAttribute("users", users.getContent());
model.addAttribute("currentPage", page);
model.addAttribute("totalPages", users.getTotalPages());
return "users";
}
}
在上面的代碼中,我們創建了一個UserController來處理用戶相關的請求。在getUsersPage
方法中,我們接收兩個參數page
和size
來表示當前頁碼和每頁的大小。通過PageRequest和Pageable來創建一個分頁對象,然后調用userService的getAllUsers方法獲取分頁數據。最后將獲取到的用戶列表、當前頁碼和總頁數添加到Model中,并返回一個視圖頁面。
在視圖頁面(users.html)中,我們可以使用Thymeleaf等模板引擎來展示分頁數據:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Users</title>
</head>
<body>
<h1>Users</h1>
<table>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
<tr th:each="user : ${users}">
<td th:text="${user.name}"></td>
<td th:text="${user.email}"></td>
</tr>
</table>
<div>
<ul>
<li th:each="pageNumber : ${#numbers.sequence(0, totalPages-1)}">
<a th:href="@{'/users?page=' + ${pageNumber}}" th:text="${pageNumber}">Page 1</a>
</li>
</ul>
</div>
</body>
</html>
在上面的代碼中,我們使用Thymeleaf模板引擎來渲染分頁數據。通過${users}
來獲取用戶列表數據,并通過${#numbers.sequence(0, totalPages-1)}
來生成頁碼鏈接。點擊頁碼鏈接會跳轉到對應頁碼的用戶列表頁面。