如何在Struts 2中实现分页

如何在Struts 2中实现客户端显示的分页和Hibernate作为持久层。

这是我到目前为止所做的代码:

      

有没有办法实现这个没有display标签?

有一种方法可以实现它,我会给你一些建议。 可能不是你正在寻找但显示标签我真的怀疑你可以实现一些不关心这个词的东西。 display标签是一个库,用于简化Web上表格数据的表示,并且已经足够老了,可以使用现代技术,如Ajax和基于组件的脚本库,如jQuery等。甚至我看到显示标签被ajaxified但我看到这只不过是增加了有问题的架构的复杂性。 需要在这里添加它基于属性的显示标记库的性质。 它的创建目的是为了简化使用或开发过程。 如今人们并不局限于定制和丑陋的解决方案。

现在查看代码,如果我可以说这是一个代码,标签代表具有行和列的表,可以使用标签,标题,其他HTML属性自定义它们,甚至使用CSS,但这不是这个问题。

属性名称表示具有表示表格数据的数据结构的变量。 它可以是列表列表,也可以是一组对象无关紧要。 它可以迭代并且有行和列是什么问题。

pagesize属性指向每页的记录数。

给定的URI甚至不记得从服务器提供数据或仅用于转义的内容。

标签末尾附近是横幅放置,使用属性设置。 因此,您甚至不必使用它来设置任何代码,只需设置自定义属性即可。

现在,为了在Struts2中用数据表示表,有一个

  

标签,列表是students或其他什么都无所谓。 导航器是与显示标签中的横幅类似的对象,但不是此处的组件。 带有按钮的组件导航器我稍后会介绍。

在迭代器内部,您可以拥有代表该行的任何内容。 但这是不可能的。

例如,导航器作为组件可以以不同的方式给出

  

然后通过SQL或HQL从数据库中获取列表中的数据,或者Criteria API无关紧要。 这分两步完成。 首先检查希望返回的记录总数。 它提供了在最后移动而不超过页面大小的可能性。 然后返回在页面上表示所需的有限行数。 这些都在显示表格的操作中完成。 要工作的动作需要第一行和pagesize两个参数。 如果记录总数发生变化,还需要更正导航器。

这就是我想要回答的关于如何实现页面导航逻辑的内容。 我试图不写很多很多代码而不是问题。

你需要或多或少地复制显示器的方式。

  1. 您需要构建页面选择器,为此您需要获取总计的项目数 – 请参阅Criteria.setProjection(Projections.rowCount)。
  2. 您需要在页面上提供允许用户将所选页面发送到操作的链接。
  3. 在您的操作中,您可以使用所选页码和页面大小来确定偏移量和结果数量,请参阅Critera.setFirstResult和Criteria.setMaxResults
  4. 然后,您将读取这些行并创建行bean集合。
  5. 在JSP中迭代bean并使用构建表。

似乎使用displaytag可能更容易,请参阅它的PaginatedList接口,它允许您在Hibernate中进行分页并让displaytag完成所有艰苦工作。

我建议你使用jQuery Datatable ,你需要做以下事情:

  

还有其他选项,如struts2-jquery-plugin

这取决于您的需求。