关键词:
【中文标题】如何在 Spring MVC 3 中实现分页 [关闭]【英文标题】:How to implement pagination in Spring MVC 3 [closed] 【发布时间】:2011-01-15 17:54:46 【问题描述】:是否有任何开箱即用、易于实现的标准分页组件/标签库或代码示例可用于 Spring MVC 中的分页?
【问题讨论】:
【参考方案1】:看看PagedListHolder
和org.springframework.beans.support
的其他课程。
请参阅示例中的 JPetstore 以获取一些示例,例如在SearchProductsController.java
:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
String keyword = request.getParameter("keyword");
if (keyword != null)
if (!StringUtils.hasLength(keyword))
return new ModelAndView("Error", "message", "Please enter a keyword to search for, then press the search button.");
PagedListHolder productList = new PagedListHolder(this.petStore.searchProductList(keyword.toLowerCase()));
productList.setPageSize(4);
request.getSession().setAttribute("SearchProductsController_productList", productList);
return new ModelAndView("SearchProducts", "productList", productList);
else
String page = request.getParameter("page");
PagedListHolder productList = (PagedListHolder) request.getSession().getAttribute("SearchProductsController_productList");
if (productList == null)
return new ModelAndView("Error", "message", "Your session has timed out. Please start over again.");
if ("next".equals(page))
productList.nextPage();
else if ("previous".equals(page))
productList.previousPage();
return new ModelAndView("SearchProducts", "productList", productList);
【讨论】:
(+1) 该死的,我不知道它在那里。我必须至少实现了 3 次该功能,而且它已经在那里...... 酷,顺便问一下,你能解释一下,在 SearchProductsController 代码示例中如何需要 session 吗?我浏览了无法使用它的代码。 @Nachiket 创建后,PagedListHolder
对象被放入 Session 中,分页实际上是在内存中的对象上完成的。这回答了你的问题了吗?如果不是,你能澄清一下吗?
很酷的例子,只是在寻找类似的东西;)。您可以通过使用 RequestParam 注释进一步简化它,因此不需要 Request 和 Response 对象。因此方法签名看起来像public ModelAndView handleRequest(@RequestParam (required = false) String keyword, @RequestParam(required = false) String page, HttpSession session)
。然后 Spring 将执行 getParameter 部分并使用相应的值填充这些字段。同样,它会直接传递 HttpSession 对象。
这意味着如果同一用户打开另一个搜索窗口,他将不会获得其他独立的结果集,因为它们已绑定到会话?【参考方案2】:
我也在寻找一种方法来做到这一点,但没有找到任何标准组件或 taglib。我认为主要是因为分页可以变得非常具体,因为您已经需要从数据库中通过分页来检索数据(如果您使用的是 Hibernate,则可以使用 Criteria API 轻松地做到这一点)。我想出了这样的事情:
public class Pager
private int page;
private int results;
private String sortOrder;
private String sortColumn;
// Getters and setters
@Controller
public class StuffController
@Autowired SomeEntityService someEntityService;
@RequestMapping("/test.html", method = Method.GET)
public void getStuffPaged(@RequestParam("id") String id, Pager pager, ModelMap mm)
mm.addAttribute("entities", someEntityService.get(id, pager));
如果您现在向http://domain/app/test.html?id=10&page=1&results=30&sortOrder=asc
执行请求,您将在请求中获得寻呼机对象。
【讨论】:
我没有使用休眠,但它很酷.. 好一个.. :) 迄今为止最好的答案!绑定分页参数的简洁方法,也可以在没有休眠的情况下使用! 你可以使用 Spring 默认提供的Pageable
而不是 Pager
【参考方案3】:
您听说过 Spring Data JPA 项目吗?使用 Pagable 接口有一个很好的灵活解决方案。我发现它是实现干净、无样板分页的最简单方法。在Spring Data JPA homepage 上查看更多信息。
【讨论】:
我查看了该链接,但没有发现任何针对此目的的内容【参考方案4】:没有人想到,Google 也没有透露任何具体的组件(尽管它提供了非常具体的示例和提示)。但理论上只有一堆按钮和一个(或两个)请求参数就绰绰有余了。然后让 SQL/DB 完成它的工作。我已经在here 之前在 JSP/Servlet/DAO 上下文中发布了类似问题的答案。
它基本上归结为将firstrow
(要在页面中显示的第一行的索引)作为请求参数传递,并在分页表单中有两个按钮/链接,它们在/减少firstrow
和rowcount
(在页面中一次显示的行数)结合 SQL 查询,该查询在每个 LIMIT
、OFFSET
子句或子选择或特定函数的帮助下返回结果的子集,具体取决于数据库题。有关详细的代码示例和 SQL 查询,请参阅前面链接的答案。
【讨论】:
【参考方案5】:Here's a link to the Spring Data JPA reference docs,他们有一个非常干净的网页分页方法。
【讨论】:
太棒了,谢谢。是否支持按列搜索? 是的。 Repos 支持 findByXxx()、findByXxx(Pageable) 等,其中 xxx 是列。【参考方案6】:前段时间我发布了一个开源java库,专注于使用spring框架进行分页。
虽然不是很成功,但也许有人有兴趣尝试一下。
有使用它的例子
Swing DisplayTag YUI Datatable Vaadin网上的例子有些陈旧,最好从sourceforge下载jdal-samples文件。
【讨论】:
如何使用hibernate在spring boot中实现分页
】如何使用hibernate在springboot中实现分页【英文标题】:Howtoimplementpaginationinspringbootwithhibernate【发布时间】:2015-12-0217:41:44【问题描述】:我正在使用带有休眠功能的SpringBoot,并且我想在我的项目中使用分页。我在谷歌上搜索并... 查看详情
如何在 Xamarin 表单中实现分页
】如何在Xamarin表单中实现分页【英文标题】:HowtoachievePaginationinXamarinforms【发布时间】:2021-12-2613:42:06【问题描述】:我需要在列表视图页面中实现分页。在这里,我在一个表中显示成百上千条记录,因此需要分页功能。由于... 查看详情
如何在nodejs + postgresql中实现分页
】如何在nodejs+postgresql中实现分页【英文标题】:Howtoimplementpaginationinnodejs+postgresql【发布时间】:2018-06-2604:23:58【问题描述】:我是Node.js的新手。我想在Node.js中使用express作为框架和Postgresql作为数据库在我的Api编写中实现分页... 查看详情
如何在排名查询中实现分页?
】如何在排名查询中实现分页?【英文标题】:Howtoimplementpaginginrankingquery?【发布时间】:2014-03-0506:18:32【问题描述】:我正在尝试使用MySQL进行排名。我找到了一篇关于它的好文章,没有使用自连接(rankingwithoutselfjoin)。SELECTscore... 查看详情
如何在 dojox.datagrid 中实现分页
】如何在dojox.datagrid中实现分页【英文标题】:howtoimplementpaginationindojox.datagrid【发布时间】:2019-02-1319:37:34【问题描述】:我有一个在dojox.datagrid中显示分页的请求,我尝试搜索但没有运气。想知道dojox.datagrid中是否可以分页,... 查看详情
如何在 React 中实现分页
】如何在React中实现分页【英文标题】:HowtoimplementpaginationinReact【发布时间】:2017-03-0701:58:48【问题描述】:我是ReactJS的新手,正在其中创建一个简单的TODO应用程序。实际上,它是一个非常基本的应用程序,没有数据库连接,... 查看详情
如何在Android listview中实现分页
】如何在Androidlistview中实现分页【英文标题】:HowtoimplementpaginationinAndroidlistview【发布时间】:2013-05-1517:28:04【问题描述】:我正在为Android应用程序工作,我需要在其中显示带有项目的列表视图。但是列表视图中要显示更多元素... 查看详情
如何在 PHP 中实现分页? [关闭]
】如何在PHP中实现分页?[关闭]【英文标题】:HowdoyouimplementpaginationinPHP?[closed]【发布时间】:2010-09-2100:57:37【问题描述】:PHP中通常如何实现分页结果?我想要一个包含10个结果的结果页面。在导航中向前翻页会给我下一组和上... 查看详情
如何在 Git 标签中实现分页
】如何在Git标签中实现分页【英文标题】:HowtoachievepaginationinGittag【发布时间】:2021-11-0519:04:31【问题描述】:谁帮帮我将git标签限制为100需要在第一次获取时获取前100个标签需要传递一些key或token来获取下一批可以像分页一样... 查看详情
如何在 SQL for MS Access 中实现分页?
】如何在SQLforMSAccess中实现分页?【英文标题】:HowdoIimplementpaginationinSQLforMSAccess?【发布时间】:2009-12-1412:25:24【问题描述】:我正在使用ASP.NET通过OdbcConnection类访问MicrosoftAccess2002数据库(MDB),虽然速度很慢,但它运行良好。我... 查看详情
如何在 SQL for MS Access 中实现分页?
】如何在SQLforMSAccess中实现分页?【英文标题】:HowdoIimplementpaginationinSQLforMSAccess?【发布时间】:2009-12-1412:25:24【问题描述】:我正在使用ASP.NET通过OdbcConnection类访问MicrosoftAccess2002数据库(MDB),虽然速度很慢,但它运行良好。我... 查看详情
如何在后端自定义查询中实现分页
】如何在后端自定义查询中实现分页【英文标题】:Howtoimplementpaginationincustomqueryinbackand【发布时间】:2016-02-2319:31:05【问题描述】:我想在我的自定义查询中实现分页,就像在提供的查询中一样。我想提供行数和页数。我尝试... 查看详情
在 ASP.NET Core 2.1 Web API 中实现分页
...905:28:50【问题描述】:我搜索了,但并没有真正找到关于如何在ASP.NETWebAPICore2.1应用程序中实现分页逻辑的文章...我有以下[Route("api/[controller]")][ApiController][EnableCors( 查看详情
在ssh项目中实现分页效果
在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询能够将表中的数据分页显示,点击相关的按钮实现:首页、上一页、下一页、末页的显示1新建一个dynamicwebproject项目,导入SSH项目所需要的jarantlr-2.... 查看详情
用servlet与jsp中实现分页查询
这个题目,总共分4个部分1.查询总页数,把页码显示在页面上2.把每页的内容显示在页面上3.首页,尾页,上一页,下一页4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页)详解如下:(一部分代码在servlet中,... 查看详情
在mongodb中实现分页
】在mongodb中实现分页【英文标题】:Implementingpaginationinmongodb【发布时间】:2015-03-2204:52:34【问题描述】:我知道使用skip来实现分页是一种不好的做法,因为当您的数据变大时skip开始消耗大量内存。解决此问题的一种方法是使... 查看详情
使用 scrollViewDidScroll 方法在 UITableView 中实现分页?
】使用scrollViewDidScroll方法在UITableView中实现分页?【英文标题】:ImplementingpaginationinUITableViewwithscrollViewDidScrollmethod?【发布时间】:2014-09-1714:59:06【问题描述】:我正在构建一个文章阅读应用程序。我正在使用AFNetworking第三方库... 查看详情
在ssh中实现分页排序
...配置文件路径不要写错,不然会加载404.这是demo目录spring配置文件<?xmlversion="1.0"encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi... 查看详情