对于数据库中的数据,通常的展现方式是表格,然而,表格的缺点是有些古板,DataView提供了另外一种选择,它可以充分发挥你的想象力,允许你来指定数据展现的方式,原则上来说,它允许用任何你能想到的方式展现你的数据。
表 30.35. 构件信息
| Component Type | org.operamasks.faces.component.widget.UIDataView |
| Component Family | javax.faces.Data |
| Component Class | org.operamasks.faces.component.widget.UIDataView |
| Tag Class | org.operamasks.faces.webapp.widget.UIDataViewTag |
| Renderer Type | org.operamasks.faces.component.widget.UIDataView |
| Renderer Class(AJAX) | org.operamasks.faces.render.widget.ajax.AjaxDataViewRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++javax.faces.component.UIData
+++++org.operamasks.faces.component.widget.page.UIPagedData
++++++org.operamasks.faces.component.widget.base.UIDataViewBase
+++++++org.operamasks.faces.component.widget.UIDataView
表 30.36. 属性
| async | 定义类 | org.operamasks.faces.component.widget.base.UIDataViewBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否异步加载数据 | ||||
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| container | 定义类 | org.operamasks.faces.component.widget.UIDataView | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataview外层div的id | ||||
| first | 定义类 | org.operamasks.faces.component.widget.page.UIPagedData | ||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定显示的数据从哪一行开始 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| indexVar | 定义类 | org.operamasks.faces.component.widget.page.UIPagedData | ||
| 类型 | java.lang.String(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 标识服务器端的记录集的行号 | ||||
| jsvar | 定义类 | org.operamasks.faces.component.widget.UIDataView | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 客户端脚本使用的javascript变量名 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| rows | 定义类 | org.operamasks.faces.component.widget.page.UIPagedData | ||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 需要显示的行的数目 | ||||
| template | 定义类 | org.operamasks.faces.component.widget.UIDataView | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 定义简单模板 | ||||
| value | 定义类 | javax.faces.component.UIData | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 构件的当前值 | ||||
| var | 定义类 | javax.faces.component.UIData | ||
| 类型 | java.lang.String(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 代表每一行数据的变量 | ||||
以下的示例来自于 bpdemos,是一个商品价格查询的表格,这里定义了4列的信息,分别是"title"、 "listPrice"、 "yourPrice" 和"image",接着下面定义了模板,用{列的id}来绑定该列的信息,从而达到自定义的效果。
<w:page title="DataView">
<w:pagingToolbar for="view-example" pageSize="3" />
<w:form>
<w:dataView id="view-example" jsvar="productView"
value="#{datarepresent.dataViewBean.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>
</w:form>
</w:page>