如何在 Spring MVC 3 中实现分页 [关闭]

     2023-02-22     85

关键词:

【中文标题】如何在 Spring MVC 3 中实现分页 [关闭]【英文标题】:How to implement pagination in Spring MVC 3 [closed] 【发布时间】:2011-01-15 17:54:46 【问题描述】:

是否有任何开箱即用、易于实现的标准分页组件/标签库或代码示例可用于 Spring MVC 中的分页?

【问题讨论】:

【参考方案1】:

看看PagedListHolderorg.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(要在页面中显示的第一行的索引)作为请求参数传递,并在分页表单中有两个按钮/链接,它们在/减少firstrowrowcount (在页面中一次显示的行数)结合 SQL 查询,该查询在每个 LIMITOFFSET 子句或子选择或特定函数的帮助下返回结果的子集,具体取决于数据库题。有关详细的代码示例和 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... 查看详情