首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Spring MVC3中实现分页

如何在Spring MVC3中实现分页
EN

Stack Overflow用户
提问于 2010-02-11 22:26:39
回答 5查看 80.9K关注 0票数 56

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-11 23:45:10

看看org.springframework.beans.support中的PagedListHolder和其他类。

有关示例,请参阅示例中的JPetstore,例如在SearchProductsController.java

代码语言:javascript
复制
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);
    }
}
票数 87
EN

Stack Overflow用户

发布于 2010-02-11 23:15:37

我也在寻找这样做的方法,但没有找到任何标准组件或taglib。我认为主要是因为分页可以变得非常具体,因为您需要通过分页从数据库中检索数据(如果您使用的是Hibernate,则可以使用Criteria API轻松实现)。我想出了这样的东西:

代码语言:javascript
复制
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的请求,您将在请求中获得页面导航对象。

票数 11
EN

Stack Overflow用户

发布于 2013-02-08 22:57:07

你听说过Spring Data JPA项目吗?使用Pagable接口有一个很好的灵活的解决方案。我发现这是实现干净的、无样板的分页的最简单方法。请访问Spring Data JPA homepage了解更多信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2245035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档