我有丰富的:数据表有500(行)数据,我正在使用rich:datascroller用于分页,但问题是所有数据都是在第一次获取,所以如果有人有点击第2页的方式hibernate fetches表格中的行(11-20)。我正在使用Spring + Hibernate。请详细说明解决方案。
答案 0 :(得分:1)
您需要自定义数据模型和自定义数据提供程序。使用query.setMaxResults(..)
,数据提供程序将负责获取有限的结果。请注意,由于您使用的是spring,因此DataProvider
实例是弹簧管理的。
Here是我们用于此目的的一些代码。
答案 1 :(得分:0)
您可以使用一个任务对自己的数据滚动器进行类比:通过ajax渲染表U用于显示记录!
e.g。
<rich:dataTable id="dtId" rows="10" value="#{bean.records}" var="record">
// content (records)
</rich:dataTable>
你自己的卷轴:
<a4j:repeat value="#{bean.pages}" var="page">
<a4j:commandLink value="#{page}" render="dtId"
actionListener="#{bean.myListener()}">
<f:param name="selectedPageNumber" value="#{page}" />
</a4j:commandLink>
</a4j:repeat>
你会得到一张桌子和smth。喜欢之后:0 1 2 3 4 5(#{bean.pages} - 只是数字 - 表示页面) 并点击每个链接(0123 ...)您的监听器(myListener)可以从数据库中检索新的数据部分并更新#{bean。记录}列表,并在重新渲染后,您将有一个表格新数据!