33.30. <g:xyDataSeries>

XyDataSeries构件与DataSeries构件很相似,它们的属性基本相同,功能相同。不同之处在于XyDataSeries绑定的数据需要提供X坐标值和Y坐标值。

33.30.1. 构件信息

表 33.83. 构件信息

Component Typeorg.operamasks.faces.graph.XYDataSeries
Component Familyavax.faces.Data
Component Classorg.operamasks.faces.component.graph.UIXYDataSeries
Tag Classorg.operamasks.faces.webapp.graph.XYDataSeriesTag

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UIData

+++++org.operamasks.faces.component.graph.UIDataSeries

++++++org.operamasks.faces.component.graph.UIXYDataSeries

33.30.2. 属性

表 33.84. 属性

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)
是否必须 延时求值
代表每一行数据的变量

33.30.3. 构件API

33.30.4. 示例

以下的例子介绍了g:xyDataSeries标签常用方法,在创建jsp页面之前,需要创建为数据表提供数据的托管Bean:

@ManagedBean(scope=ManagedBeanScope.SESSION)
public class XYData extends ArrayDataModel
{
    public XYData() {
        this(4, 20);
    }

    public XYData(int numSeries, int numRows) {
        super(createData(numSeries, numRows));
    }

    public void randomize() {
        setWrappedData(createData(4, 20));
    }

    private static Point[][] createData(int numSeries, int numRows) {
        Random r = new Random();
        Point[][] data = new Point[numRows][numSeries];
        for (int i = 0; i < numRows; i++) {
            for (int j = 0; j < numSeries; j++) {
                data[i][j] = new Point(i, r.nextInt(100)-50);
            }
        }
        return data;
    }
}

下面是jsp页面中关于g:xyDataSeries标签使用的代码:

<g:areaChart title="XY Area Chart Demo" xAxisLabel="X" yAxisLabel="Y" showLegend="true"> 
  <g:xyDataSeries value="#{XYData}" var="xy"> 
    <g:xyDataItem legend="Random 1" xValue="#{xy[0].x}" yValue="#{xy[0].y}" /> 
    <g:xyDataItem legend="Random 2" x="#{xy[1].x}" y="#{xy[1].y}" /> 
  </g:xyDataSeries> 
</g:areaChart>