如何实现Struts 2的分页(How to implement a pagination in S

2019-07-19 21:14发布

如何可以实现寻呼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标签?

Answer 1:

有实现它的方式,我会给你一些建议。 可能这并不是说你正在寻找,但与显示标签,我真怀疑,你可以实现的东西不小心说这个词。 显示标签是用于简化在网络上,并且已经老得足以与现代技术,如Ajax和基于组件脚本库如jQuery等使用表格数据表示库连我见过的显示标签支持Ajax,但我看到这无非只是增加了复杂性有问题的架构。 需要在这里添加它是根据财产显示标签库的性质。 它与目的用于简化使用或开发过程中的时间。 现在人们不与自定义的和丑陋的解决方案限制了自己。

现在看代码,如果我可以说是一个代码,这个标签代表给定的可能性与标签,标题,其他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或条件API不要紧数据库中提取。 这两个步骤完成。 首先检查了希望返回记录的总数。 它给移到末尾,而不是超过PAGESIZE的可能性。 然后返回代表在页面上需要的行数量有限。 这些都在显示表中的动作完成。 工作动作需要两个参数中的第一行和页面大小。 这也是需要如果记录的总数变更为纠正导航。

这就是我想回答有关如何实现页面导航逻辑。 我试着不要写很多很多代码,它毫无疑问的。



Answer 2:

你需要更多或更少的复制显示的方式做到这一点。

  1. 你需要建立一个页面选择,为此,你需要得到总项目数 - 见Criteria.setProjection(Projections.rowCount)。
  2. 您需要提供允许用户选择的页面发送到您的行动网页上的链接。
  3. 在你的动作就可以使用选择的页面数量和页面大小来确定偏移和结果的数量,见Critera.setFirstResult和Criteria.setMaxResults
  4. 然后,你会读这些行,并创建排豆的集合。
  5. 在你的JSP遍历豆类和使用建立自己的表<S:迭代器\>。

这似乎是使用displaytag可能会更容易,可见其PaginatedList接口,它允许你在Hibernate的分页,让displaytag做所有的辛勤工作。



Answer 3:

我建议你使用jQuery的数据表 ,你需要做以下几点:

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

还有像其他选项的struts2-jQuery的插件

这取决于你的需求。



文章来源: How to implement a pagination in Struts 2