【问题标题】:How to implement a pagination in Struts 2如何在 Struts 2 中实现分页
【发布时间】:2013-01-30 04:55:36
【问题描述】:

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

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

<display:table id="students" name="students" pagesize="2"
    export="false" requestURI="/student">
    <display:column property="studentRoll" title="Roll"
        paramId="studentRoll" sortable="true" />
    <display:column property="studentName" title="Name" sortable="true" />
    <display:column property="studentCourse" title="Course"
        sortable="true" />
    <display:setProperty name="paging.banner.placement" value="bottom" />
</display:table>

没有display标签有什么方法可以实现吗?

【问题讨论】:

  • 用结果更好地描述你是怎么做的。

标签: java jsp struts2 struts2-jquery jquery-pagination


【解决方案1】:

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

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

属性名代表一个变量,其数据结构代表一个表格数据。它可能是一个列表列表或一组对象无关紧要。它可以是可迭代的并且有行和列是怎么回事。

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

给定的 URI 甚至不记得从服务器提供数据的内容是什么,或者只是为了转义。

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

现在,用 Struts2 中的数据表示表格,有一个

<s:iterator var="row" begin="0" value="#request.navigator.list">

标签,列表是students 或其他无关紧要的东西。导航器是类似于显示标签中的横幅的对象,但这里不是组件。带有按钮的组件导航器我将在后面介绍。

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

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

<s:property value="#request.navigator.bar" escapeHtml="false"/>  

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

这就是我想回答的关于如何实现页面导航逻辑的问题。我尽量不要写很多很多代码,因为它毫无疑问。

【讨论】:

  • 好的,谢谢您的详细解释。但我无法将 css 应用于显示标签。请您指定任何解决方案来执行此操作。
  • 这可能是另一个答案,现在你可以看看this
【解决方案2】:

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

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

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

【讨论】:

  • 好的,谢谢你的重播。但我不能为显示标签应用 css。你能指定任何解决方案吗?
【解决方案3】:

我建议您使用jQuery Datatable,您需要完成以下操作:

<table id="datatable">
  <tbody>
    <s:iterator>
        <tr><td><s:property/></td></tr>
    </s:iterator>
  </tbody>
</table>
<script>
    $("#datatable").dataTable();
</script>

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

这取决于您的需求。

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2017-12-23
    相关资源
    最近更新 更多