33.9. <g:dataItem>

尽管DataSeries构件绑定了数据集合,但是它并不能在图表中将这些数据表现。g:dataItem标签的作用在于它能获取DataSeries绑定集合的值,并在图表上将这个值表现出来。

33.9.1. 构件信息

表 33.26. 构件信息

Component Typeorg.operamasks.faces.graph.DataItem
Component Familyorg.operamasks.faces.graph.DataItem
Component Classorg.operamasks.faces.component.graph.UIDataItem
Tag Classorg.operamasks.faces.webapp.graph.DataItemTag

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.graph.UIDataItem

33.9.2. 属性

表 33.27. 属性

binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
color 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定构件描绘图形的颜色
drawItemLabel 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
指定是否显示数据值,默认值是false
drawLines 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定是否描绘数据间的连线,默认值时true,此属性只会在构件包含在LineChart或CurveChart构件里才有效
drawMarkers 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定构件是否显示数据点标记,默认值时false,此属性只会在构件包含在LineChart或CurveChart构件里才有效
drawOutline 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定是否显示图例的图标边框,默认值是true
fillMarkers 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定构件显示数据点标记时,标记是否被填充,默认值是true
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
itemLabelColor 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据值的颜色
itemLabelFont 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据值的字体
legend 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
指定图例名称
lineStyle 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(org.operamasks.faces.component.graph.LineStyleType)
是否必须 延时求值
指定数据间连线的样式
lineWidth 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
指定数据间连线的宽度,此属性只会在构件包含在LineChart或CurveChart构件里才有效
markerFillColor 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定填充数据点标记的颜色
outlineColor 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定图例的图标边框颜色
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
showLegend 定义类 org.operamasks.faces.component.graph.UIDataItem
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定否显示图例,默认值是false

33.9.3. 构件API

33.9.3.1. LineStyleType(枚举类型)

表 33.28. 枚举成员

名称 说明
Solid实线
Dot点线
Dash虚线
DashDot点-虚线
DashDotDot点-点-虚线

33.9.4. 示例

以下的例子介绍了g:dataItem标签常用方法,在创建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; 
  } 
}

由于并不是所有的图表都支持DataItem的全部属性,这里使用LineChart构件做为演示例子:

<g:lineChart title="Line Chart Demo" xAxisLabel="Category" yAxisLabel="Value" showLegend="true">
 <g:dataSeries value="#{CategoryData}" var="x" rows="10">
   <g:dataLabel value="#{x.label}" />
   <g:dataItem legend="First" value="#{x.first}" drawMarkers="true"/>
   <g:dataItem legend="Second" value="#{x.second}" drawMarkers="true" fillMarkers="false"/>
   <g:dataItem legend="Third" value="#{x.third}" drawMarkers="true" markerFillColor="gray"/>
 </g:dataSeries> 
</g:lineChart>