DataSeries构件功能在于绑定一个数据集合,为数据表提供数据。DataSeries构件需与DataItem构件结合使用。
表 33.31. 构件信息
| Component Type | org.operamasks.faces.graph.DataSeries |
| Component Family | javax.faces.Data |
| Component Class | org.operamasks.faces.component.graph.UIDataSeries |
| Tag Class | org.operamasks.faces.webapp.graph.DataSeriesTag |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++javax.faces.component.UIData
+++++org.operamasks.faces.component.graph.UIDataSeries
表 33.32. 属性
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| first | 定义类 | javax.faces.component.UIData | ||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定显示的数据从哪一行开始 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| rows | 定义类 | javax.faces.component.UIData | ||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 需要显示的行的数目 | ||||
| value | 定义类 | javax.faces.component.UIData | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 构件的当前值 | ||||
| var | 定义类 | javax.faces.component.UIData | ||
| 类型 | java.lang.String(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 代表每一行数据的变量 | ||||
以下的例子介绍了g:dataSeries标签常用方法,在创建jsp页面之前,需要创建为数据表提供数据的托管Bean:
@ManagedBean(scope=ManagedBeanScope.SESSION)
public class CategoryData extends ArrayDataModel {
public CategoryData() {
this(20);
}
public CategoryData(int numRows) {
super(createData(numRows));
}
public void randomize() {
setWrappedData(createData(20));
}
private static CategoryDataItem[] createData(int numRows) {
Random r = new Random(); CategoryDataItem[] data = new CategoryDataItem[numRows];
for (int i = 0; i < numRows; i++) {
data[i] = new CategoryDataItem("Category " + (i+1), r.nextInt(10)+1, r.nextInt(10)+1, r.nextInt(10)+1);
}
return data;
}
}DataSeries构件的属性不多,但value、var、rows和first属性都是很常用的属性,了解这些属性对使用此构件很有帮助。下面是涉及DataSeries的代码:
<!-- Area Chart -->
<g:areaChart title="Area Chart Demo" xAxisLabel="Category" yAxisLabel="Value" showLegend="true" foregroundAlpha="0.7">
<g:dataSeries value="#{CategoryData}" var="x" rows="5">
<g:dataLabel value="#{x.label}" />
<g:dataItem legend="First" value="#{x.first}" />
<g:dataItem legend="Second" value="#{x.second}" />
<g:dataItem legend="Third" value="#{x.third}" />
</g:dataSeries>
</g:areaChart>
<!-- Bar Chart -->
<g:barChart title="3D Bar Chart Demo" xAxisLabel="Category" yAxisLabel="Value" effect3D="true" showLegend="true">
<g:dataSeries value="#{CategoryData}" var="x" rows="5" first="3"> ...... </g:dataSeries>
</g:barChart>