Myfaces组件分页的简单使用
Myfaces组件提供t:dataScroller标签实现分页,很傻瓜化。
JSF页面:
<t:dataTable id=”userListTable” rows=”10”>
…………
</t:dataTable>
<t:dataScroller id="userListscroll"
for="userTable"
fastStep="10"
rowsCountVar="rowsCount"
displayedRowsCountVar="displayedRowsCountVar"
firstRowIndexVar="firstRowIndex"
lastRowIndexVar="lastRowIndex"
pageCountVar="pageCount"
pageIndexVar="pageIndex"
styleClass="scroller"
paginator="true"
paginatorMaxPages="9"
paginatorTableClass="paginator"
paginatorActiveColumnStyle="font-weight:bold;"
immediate="false">
<f:facet name="first" >
<h:outputText value="first"/>
</f:facet>
<f:facet name="last">
<h:outputText value="last"/>
</f:facet>
<f:facet name="previous">
<h:outputText value="previous"/>
</f:facet>
<f:facet name="next">
<h:outputText value="next"/>
</f:facet>
<f:facet name="fastforward">
<h:outputText value="fastforward"/>
</f:facet>
<f:facet name="fastrewind">
<h:outputText value="fastrewind"/>
</f:facet>
<h:outputFormat value="总记录数:{0}条——这页显示了{1}条记录——这页显示第{2}到第{3}条记录——页数:{4}/{5}">
<f:param value="#{rowsCount}" />
<f:param value="#{displayedRowsCountVar}" />
<f:param value="#{firstRowIndex}" />
<f:param value="#{lastRowIndex}" />
<f:param value="#{pageIndex}" />
<f:param value="#{pageCount}" />
</h:outputFormat>
</t:dataScroller>
要给dataTable设置id,rows(每页要显示的行数)
我们配置t:dataScroller的一些属性:
for 必须指定,值对应要实现分页的dataTable的id值。
fastStep 表示fastforward,fastrewind快进的页数。
paginator 是否显示页数变化轨迹,即是否显示1,2,3,4……
paginatorMaxPages 指定页数变化轨迹中的数量
而dataScroller还有6个属性用于显示一些常用的值:
{0} rowsCountVar="rowsCount" //总记录数{0}条
{1} displayedRowsCountVar="displayedRowsCountVar" //这页显示了{1}条记录
{2} firstRowIndexVar="firstRowIndex" //这页显示第{2}到第{3}条记录
{3} lastRowIndexVar="lastRowIndex" //这页显示第{2}到第{3}条记录
{4} pageCountVar="pageCount" //当前所在的页数为{4}
{5} pageIndexVar="pageIndex" //总页数为{5}
要注意第二个属性displayedRowsCountVar,它表示这页显示了多少条记录,跟dataTable里面的rows属性不同,rows表示每页固定显示多少条记录。
对于一般少数量数据来讲,这样实现分页就可以了,而对于海量的数据而言,需要实现数据库分页。