gpt4 book ai didi

sorting - 具有搜索、分页和排序功能的 Spring Boot Data JPA 表

转载 作者:行者123 更新时间:2023-12-01 02:05:32 24 4
gpt4 key购买 nike

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

我使用 Spring Boot 作为启动器,使用 Spring Data Jpa 作为存储库。我在网上搜索了一些关于包含上述所有功能的完整解决方案的示例。我发现的内容几乎包括所有这些,但显然如果有分页和排序,则没有过滤,反之亦然。

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

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

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

以下是我找到的一些教程和示例:

Link 1

Link 2

提前致谢

编辑 包含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 分开。当我单击页码时,将向服务器发送一个获取请求并使用存储的过滤器执行查询。当我提交表单时,不会考虑页码,因为页数可能会发生变化。

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

我正在考虑使用输入元素而不是使用输入元素,以便在服务器上我可以从中读取数据。我不知道如何提交具有可分页属性的发布请求。

谢谢

最佳答案

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

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

  • 页面请求参数的值标识当前页面(这是零索引)。
  • size 请求参数的值定义了页面大小。默认页面大小为 20。
  • 排序请求参数的值定义排序选项。
    Spring Data JPA reference manual提供有关支持的语法的更多信息。

  • 您现在可以通过将新的 org.springframework.data.domain.Pageable 方法参数添加到 Controller 方法中来将请求的页面信息“注入(inject)”到 Controller 方法中。在您的情况下, Controller 方法可能如下所示:
    @RequestMapping(value = "/search", method=RequestMethod.POST)
    public String search(@ModelAttribute("searchFilter") FilterDTO filter, Pageable page) {
    //Add logic here
    return "results";
    }

    关于sorting - 具有搜索、分页和排序功能的 Spring Boot Data JPA 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904407/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com