33.15. <g:histogramDataSeries>

HistogramDataSeries构件是生成柱状图的构件之一,用于获取生成柱状图所需的数据。与其他DataSeries构件相似,HistogramDataSeries构件需要与HistogramDataItem构件结合使用。

33.15.1. 构件信息

表 33.41. 构件信息

Component Typeorg.operamasks.faces.graph.HistogramDataSeries
Component Familyjavax.faces.Data
Component Classorg.operamasks.faces.component.graph.UIHistogramDataSeries
Tag Classorg.operamasks.faces.webapp.graph.HistogramDataSeriesTag

继承体系

+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.UIHistogramDataSeries

33.15.2. 属性

表 33.42. 属性

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.15.3. 构件API

33.15.4. 示例

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

@ManagedBean(scope=ManagedBeanScope.SESSION) 
public class HistogramData extends ArrayDataModel {
   ...... 
  public HistogramData() { 
    this(1000); 
  } 

  public HistogramData(int numRows) {
    createData(numRows); 
  } 

  public void randomize() {
    createData(1000); 
  } 

  private void createData(int numRows) {
    // create random data 
    Random random = new Random(); 
    Double[] data = new Double[numRows]; 
    double offset = random.nextInt(6) + 2; 
    for (int i = 0; i < numRows; i++) {
      data[i] = random.nextGaussian() + offset; 
    } setWrappedData(data); 
    ...... 
  } 

  ...... 

}

从Bean代码可以看到,程序产生了以offset值为中点且满足正态分布的1000个随机数,然后由HistogramDataItem构件将数值区域分成40个区间,每个区间的柱状高度表示在随机数在这一区间的数目。代码如下:

<g:barChart> 
  <g:histogramDataSeries value="#{HistogramData}" var="h"> 
    <g:histogramDataItem legend="H1" value="#{h}" bins="40" color="yellow"/> 
  </g:histogramDataSeries> 
</g:barChart>