【发布时间】:2020-01-07 20:16:28
【问题描述】:
我已经阅读了很多分页示例,几乎所有这些都是作为 Rest Services 我没有找到任何作为网页前端实现的示例。所以到现在为止,我已经学会了如何在后端实现分页。我在Controller、Service、Repository 中有适当的方法,并且我正在从数据库(MySQL)中获取结果值。
我的存储库扩展了 JpaRepository,我正在使用可分页实现分页。下面是我的Controller、Service、Repository中的方法。
在存储库类中
Page<SlUrl> findAllByOrderByCreationDateDesc(Pageable pageable);
在Service类中(subtractPageByOne是因为index从0开始但是url参数会从1开始)
public Page<SlUrl> getUrlsByPage(int pageNumber, int numberOfElementsPerPage) {
return urlRepository.findAllByOrderByCreationDateDesc(PageRequest.of(subtractPageByOne(pageNumber), numberOfElementsPerPage));
}
private int subtractPageByOne(int page) {
return (page < 1) ? 0 : page - 1;
}
在控制器类中
@GetMapping("/urls")
public ModelAndView openPageableUrls(ModelAndView mv, @RequestParam(defaultValue = "0") int page) {
System.out.println("Inside /urls");
Page<SlUrl> urls = slUrlService.getUrlsByPage(page, 5);
List<SlUrl> urlList = urls.getContent();
System.out.println("Url count = " + urls.getSize()
+ " Number = " + urls.getNumber() + "");
mv.setViewName("userlinks");
for (int i = 0; i < urlList.size(); i++) {
System.out.println("\nURLs Details:"
+ "\nid = " + urlList.get(i).getId()
+ "\nid = " + urlList.get(i).getDestinationUrlLink()
+ "\nid = " + urlList.get(i).getShortUrlLink()
+ "\nid = " + urlList.get(i).getUser().getUsername());
}
return mv;
}
您可以看到我有一个for 循环来显示 SlUrl 的详细信息,它工作正常。现在我的问题是在前端(JSP 页面)上显示上述详细信息的最佳方式是什么。我想到的一种方法是传递这个urlList 并使用for-each 循环来显示数据。但这些数据只是为了举例说明,如果我必须实现博客之类的东西或显示版本历史记录。
那么如何在前端最好地表示数据。一个代码示例会很有帮助。
【问题讨论】:
-
你在纠结什么?只需将页面添加到模型中,例如
mv.getModelMap().addAttribute("page", urls)并使用page.content循环浏览 JSP 中的内容。这使您也可以访问page.totalPages和page.totalElements。 -
如何实现下一个和上一个按钮?给他们什么
href?
标签: java spring spring-boot jsp pagination