您的位置:首页 > Web前端 > JavaScript

JSF中使用dataScroller和dataTable实现分页及其相关问题

2009-10-07 10:20 369 查看
在JSF中实现分页是很简单的,尤其是应用Tomahawk中的dataScroller组件。任何后台代码都不用写,只需配置一下就好。来看下面的例子:

<t:saveState value="#{roadForm.stationVec}"></t:saveState>
<h:dataTable id="data" value="#{roadForm.stationVec} var="vec" rows="10" >
<h:column id="column1">
<f:facet name="header">
<h:outputText value="序号" styleClass="min"></h:outputText>
</f:facet>
<h:outputText value="#{vec.num}"></h:outputText>
</h:column>
<h:column id="column2">
<f:facet name="header">
<h:outputText value="站点名称" styleClass="min"></h:outputText>
</f:facet>
<h:outputText value="#{vec.stationName}"></h:outputText>
</h:column>
<f:facet name="footer">
<t:dataScroller id="ds_sataion" for="data" fastStep="2"
paginatorMaxPages="6" paginator="true" >
<f:facet name="first">
<h:outputText value="首页 " />
</f:facet>
<f:facet name="last">
<h:outputText value="尾页 " />
</f:facet>
<f:facet name="previous">
<h:outputText value="上一页 " />
</f:facet>
<f:facet name="next">
<h:outputText value="下一页 " />
</f:facet>
</t:dataScroller>
</f:facet>
</h:dataTable>

注意:

1.这里使用的分页组件是Tomahawk提供的<t:dataScroller >组件,而不是JSF的基本组件。若使用JSF提供的分页组件的话,还得在后台写关于分页的代码,比较麻烦。

2.使用<t:dataScroller >组件需要注意几点问题:

a.在dataScroller中的facet的属性名称是固定的。必须保持一致。

b.若dataScroller在dataTable的外面,dataScroller的for属性是必须写的,用于指定与哪一个dataTable相关联。在这里dataScroller放在了dataTable的里面,for属性可以省略。

c.dataTable的rows属性必须要设置,否则组件无法分页。

d.由于数据是一次性读取,所以在翻页时数据会丢失。要使用Tomahawk的<saveState>组件(或是将数据保存到session中),将状态保存下来。

当然这种分页只是用于数据量较少的情况,如果数据量过大,那还是要在后台写分页类的。然后将其封装到DataModel中,前台页面的用法是一样的。不过,用了后台分页类进行分页,前台就无需再保存数据的状态了,把<saveState>组件去掉即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: