PagingLink是一个分页链接器,支持DataGrid和DataView两种构件,提供了强大的外观自定义功能,可以非常灵活的实现自己的想要的外观。
表 30.106. 构件信息
| Component Type | org.operamasks.faces.component.widget.UIPager |
| Component Family | org.operamasks.faces.component.widget.UIPager |
| Component Class | org.operamasks.faces.component.widget.UIPager |
| Tag Class | org.operamasks.faces.webapp.widget.UIPagerTag |
| Renderer Type | org.operamasks.faces.component.widget.UIPager |
| Renderer Class(AJAX) | org.operamasks.faces.render.widget.ajax.AjaxPagingLinkRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++org.operamasks.faces.component.widget.base.UIPagerBase
+++++org.operamasks.faces.component.widget.UIPager
表 30.107. 属性
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| for | 定义类 | org.operamasks.faces.component.widget.base.UIPagerBase | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件所对应的目标组件ID | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| pageSize | 定义类 | org.operamasks.faces.component.widget.base.UIPagerBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 每页显示的记录数, default: 20 ; | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| showFirst | 定义类 | org.operamasks.faces.component.widget.UIPager | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否显示首页的链接 | ||||
| showLast | 定义类 | org.operamasks.faces.component.widget.UIPager | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否显示末页的链接 | ||||
| shownNumbers | 定义类 | org.operamasks.faces.component.widget.UIPager | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 分页器上显示链接的个数 | ||||
| start | 定义类 | org.operamasks.faces.component.widget.base.UIPagerBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 从记录的第多少行开始显示, default: 0 ; | ||||
| theme | 定义类 | org.operamasks.faces.component.widget.UIPager | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 内嵌的风格 | ||||
以DataView为例子,先定义一个w:dataView,如下:
<w:dataView id="view-example" jsvar="productView" value="#{products}" var="p">
<w:outputColumn id="title" value="#{p.title}"/>
<w:outputColumn id="listPrice" value="#{p.listPrice}"/>
<w:outputColumn id="yourPrice" value="#{p.yourPrice}"/>
<w:outputColumn id="image" value="#{p.image}"/>
<f:facet name="template">
<h:panelGroup layout="block" styleClass="product">
<h:panelGrid columns="2">
<f:verbatim><img src="{image}" title="{title}" class="image"/></f:verbatim>
<h:panelGrid columns="1">
<f:verbatim><span class="title">{title}</span></f:verbatim>
<f:verbatim><span>List Price: </span><span class="listPrice">{listPrice}</span></f:verbatim>
<f:verbatim><span>Your Price: </span><span class="yourPrice">{yourPrice}</span></f:verbatim>
</h:panelGrid>
</h:panelGrid>
</h:panelGroup>
</f:facet>
<f:facet name="empty">
<f:verbatim>No data to display.</f:verbatim>
</f:facet>
</w:dataView>接着定义一个缺省风格的分页器,通过"for"属性指定它是为上面的DataView提供分页功能,如下:
<w:pagingLink id="pg1" for="view-example" pageSize="1"/>
也可以定义一个自己风格的分页器,如下:
<w:pagingLink id="pg2" for="view-example" pageSize="1" shownNumbers="4">
<%--
total模板参数:
{0} 总页数
{page} 当前页号
{pages} 总页数
{start} 本页起始记录号
{end} 本页结束记录号
{total} 总记录数
--%>
<f:facet name="total"><f:verbatim>共{0}页</f:verbatim></f:facet>
<%--
number模板参数:
{0} 当前页号
{page} 同上
{start} 本页起始记录号
{end} 本页结束记录号
--%>
<f:facet name="number"><f:verbatim>[{0}]</f:verbatim></f:facet>
<f:facet name="first"><f:verbatim>首页</f:verbatim></f:facet>
<f:facet name="last"><f:verbatim>末页</f:verbatim></f:facet>
<f:facet name="previous"><f:verbatim>上页</f:verbatim></f:facet>
<f:facet name="next"><f:verbatim>下页</f:verbatim></f:facet>
</w:pagingLink>还可以给PagingLink加上自己喜欢的样式,例如变成像Google那种,如下:
<w:pagingLink id="pg3" for="view-example" pageSize="1"/>
<style>
#pg3 li {
display:block;
float:left;
padding:28px 0 0 0;
margin:0;
}
#pg3 li.x-prev-page {
background:url(images/g.gif) top right no-repeat;
width:75px;
}
#pg3 li.x-next-page {
background:url(images/gle.gif) top left no-repeat;
width:75px;
}
#pg3 li.x-page-number {
background:url(images/o.gif) 0 0 no-repeat; font-size:13px;
width:16px;
white-space:nowrap;
overflow:hidden;
}
#pg3 li.selected {
background:url(images/ao.gif) 0 0 no-repeat;
}
</style>