SpringMVC分頁顯示效果與配置不匹配的原因

icode小白發表於2020-12-22

原因:先查資料,才配置分頁

解析: 邏輯上來說需要先配置分頁再去查詢資料資料,才能根據分頁配置去查詢資料及可實現分頁效果(分頁原理:如設定查幾條,從哪條開始查)

如果先查資料了,那麼就是查詢所有資料,自然分頁限制查詢就沒有效果。

例:controller接收mapping:

// 獲取所有員工,分頁後顯示到list頁面
@RequestMapping(value = "/emps/{pageNum}", method = RequestMethod.GET)
public String getAllEmp(Map<String, Object> map, @PathVariable("pageNum") Integer pageNum, HttpServletRequest request) {
	// 分頁配置
	PageHelper.startPage(pageNum, 2);
	List<Emp> empList = service.getAllEmp();
	// 所有的員工資訊
	PageInfo<Emp> pageInfo = new PageInfo<>(empList, 5);
	String page = PageUtil.getPageInfo(pageInfo, request);
	map.put("empList", empList);
	map.put("page", page);
	return "list";
}

pageUtil外掛

**
 * 首頁 上一頁 1 2 3 4 5 下一頁 末頁
 *
 */
public class PageUtil {

	public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {

		String path = request.getContextPath() + "/";
		StringBuilder builder = new StringBuilder();

		// 拼接首頁
		builder.append("<a href='" + path + "emps/1'>首頁</a>");
		builder.append("&nbsp;&nbsp;");

		// 拼接上一頁
		if (pageInfo.isHasPreviousPage()) {
			builder.append("<a href='" + path + "emps/" + pageInfo.getPrePage() + "'>上一頁</a>");
			builder.append("&nbsp;&nbsp;");
		} else {
			builder.append("上一頁");
			builder.append("&nbsp;&nbsp;");
		}

		// 拼接頁碼
		int[] nums = pageInfo.getNavigatepageNums();
		for (int i : nums) {
			if (i == pageInfo.getPageNum()) {
				builder.append("<a style='color:red;' href='" + path + "emps/" + i + "'>" + i + "</a>");
				builder.append("&nbsp;&nbsp;");
			} else {
				builder.append("<a href='" + path + "emps/" + i + "'>" + i + "</a>");
				builder.append("&nbsp;&nbsp;");
			}
		}

		// 拼接下一頁
		if (pageInfo.isHasNextPage()) {
			builder.append("<a href='" + path + "emps/" + pageInfo.getNextPage() + "'>下一頁</a>");
			builder.append("&nbsp;&nbsp;");
		} else {
			builder.append("下一頁");
			builder.append("&nbsp;&nbsp;");
		}

		// 拼接尾頁
		builder.append("<a href='" + path + "emps/" + pageInfo.getPages() + "'>尾頁</a>");
		builder.append("&nbsp;&nbsp;");

		return builder.toString();

	}

}

相關文章