首页 文章

Spring Boot Data JPA表,包含搜索,分页和排序

提问于
浏览
3

我正在为一组表开发一个管理界面 . 我需要实现列表,排序,过滤和分页等功能 .

我使用Spring Boot作为入门者,使用Spring Data Jpa作为存储库 . 我在网上搜索了一些包含所有上述功能的完整解决方案的例子 . 我发现几乎包括所有这些,但显然如果有分页和排序没有过滤或反之亦然 .

现在我使用 @ModelAttribute 将过滤器存储在会话中的应用程序对象中,但我知道这是一个很好的设计,因为应用程序将扩展并且变得难以维护 . 我也使用 PagePagination 进行分页,并使用 Specifications 进行过滤 .

我想要的是在一个请求中提交所有数据,即:搜索字段,排序字段和当前页面 . 当然,如果搜索字段不为空,则将重新初始化分页 .

另一件事是我不想使用jQuery数据表,而是使用纯HTML和表单提交 .

以下是我发现的一些教程和示例:

Link 1

Link 2

提前致谢

包含 EDIT html表格

这是我的表格和我的分页部分的结构:

<form method=post action=someLink>
    <table> -populated from controller using Thymeleaf - </table>
    <div class=pagination>
         <ul>  - actually this div is build using the page object returned from server -
            <li><a href=link/?page=;size=;>1</a></li>
            <li><a href=link/?page=;size=;>2</a></li>
            <li><a href=link/?page=;size=;>3</a></li>
         </ul>
    </div>
</form>

正如您所看到的,表单与我的分页div分开 . 当我点击页码时,将获取请求发送到服务器并使用存储的过滤器执行查询 . 当我提交表格时,不考虑页码,因为页数可以改变 .

所以我的问题是如何构建表单以在一次提交中包含分页 .

我正在考虑使用输入元素而不是使用输入元素,所以在服务器上我可以从中读取数据 . 我不知道如何使用可分页属性提交该帖子请求 .

谢谢

1 回答

  • 3

    您要做的第一件事是启用Spring Data Web支持 . 如果您使用的是Spring Boot,它可能是由Spring Boot激活的 .

    启用Spring Data Web支持后,您可以通过设置这些请求参数的值来指定当前页面,页面大小和排序选项:

    • 页面请求参数的值标识当前页面(这是零索引) .

    • size request参数的值定义页面大小 . 默认页面大小为20 .

    • sort request参数的值定义排序选项 . Spring Data JPA reference manual提供了有关支持的语法的详细信息 .

    现在,您可以通过在控制器方法中添加新的org.springframework.data.domain.Pageable方法参数,将所请求的页面信息"inject"添加到控制器方法中 . 在您的情况下,控制器方法可能如下所示:

    @RequestMapping(value = "/search", method=RequestMethod.POST)
    public String search(@ModelAttribute("searchFilter") FilterDTO filter, Pageable page) {
        //Add logic here
        return "results";
    }
    

相关问题