6.6 数据迭代
以下组件迭代一个集合的整个数据,并在页面上显示它们。
6.6.1 < rich:column >,从3.0.0版开始可用
6.6.1.1 描述
该组件是指在UIData组件中渲染行。
图6.13. <rich:column>组件
6.6.1.2 主要功能
n 完美的皮肤表行和子元素。
n 可以利用"colspan"的帮助合并行。
n 可以利用"rowspan"和"breakBefore"的帮助合并列。
n 排序列值。
n 过滤列值。
[重要,"colspan"、"rowspan"和"breakBefore"属性只影响在<rich:dataTable>中的列,不影响在<rich:extendedDataTable>中的。]
6.6.1.3 使用细节
要输出简单的表,<rich:column>的用法和标准的<h:column>一样。请下面的例子:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
<rich:column>
<f:facet name="header">State Flag</f:facet>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column>
<f:facet name="header">State Name</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column >
<f:facet name="header">State Capital</f:facet>
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column>
<f:facet name="header">Time Zone</f:facet>
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:dataTable>
...
结果为:
图6.14 <rich:column>组件
现在,为了将文字信息分组为在一个标志列中的一行中,使用"colspan"属性,它与一个HTML的相似,指定首列包含三列。另外,需要利用breakBefore="true"的帮助指定下列从首行开始。例子:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
<rich:column colspan="3">
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column breakBefore="true">
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column >
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:dataTable>
...
渲染出下面的结果:
图6.15 利用 "colspan"和"breakbefore"属性修改的<rich:column>
相同的方法可以用于列分组,只是利用"rowspan" 属性,它与一个HTML的相似,负责当前行占据的行数量的定义。在例子中,唯一要做的事情是一个指令,移动在第二列后每个下一行到下行中。例子:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
<rich:column rowspan="3">
<f:facet name="header">State Flag</f:facet>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column>
<f:facet name="header">State Info</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column breakBefore="true">
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column breakBefore="true">
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:dataTable>
...
结果为:
图6.16 <rich:column>,利用了"rowspan"属性。
对一个特殊行的标准输出,另外用<h:column>组件提供,因此,可以利用特定的HTML属性轻松地分组行。
利用后面章节描述的<h:columnGroup>组件的帮助,列也可以用特殊的方式分组。
在动态列维基文章[http://wiki.jboss.org/wiki/DynamicColumns],你可找到有关动态列的基他信息。
6.6.1.4 排序和过滤
6.6.1.4.1 排序
为了排序列,你应该使用"sortBy"属性,它指明什么值被排序。这个属性只能与<rich:dataTable>组件一起使用。在"sortBy"属性中的表达式只能引用"var"属性声明的变量,对那些使用其他属性声明的,比如"rowKeyVar"属性,则不能引用。要排序列,你应该点击它的标题。如下所示:
...
<h:form>
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" width="300px">
<f:facet name="header">
<h:outputText value="Sorting Example"/>
</f:facet>
<rich:column sortBy="#{cap.state}">
<f:facet name="header">
<h:outputText value="State Name"/>
</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column sortBy="#{cap.name}">
<f:facet name="header">
<h:outputText value="State Capital"/>
</f:facet>
<h:outputText value="#{cap.name}"/>
</rich:column>
</rich:dataTable>
</h:form>
...
结果为:
图6.17 使用了"sortBy"属性的<rich:column>
"sortExpression"属性定义了一个bean属性,它被用来排序列。这个属性只能与<rich:scrollableDataTable>组件一起使用。属性的用法如下所示:
...
<rich:scrollableDataTable
value="#{dataTableScrollerBean.allCars}" sortMode="single"
var="category">
<rich:column sortExpression="#{category.make}">
<f:facet name="header">
<h:outputText styleClass="headerText" value="Make" />
</f:facet>
<h:outputText value="#{category.make}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText styleClass="headerText" value="Model" />
</f:facet>
<h:outputText value="#{category.model}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText styleClass="headerText" value="Price" />
</f:facet>
<h:outputText value="#{category.price}" />
</rich:column>
</rich:scrollableDataTable>
...
"selfSorted"属性是用于添加能够通过点击标题自动排序列。默认为"true"。下面的例子,第二列是不能排序的。
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap">
<rich:column>
<f:facet name="header">
<h:outputText value="State Flag"/>
</f:facet>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column sortBy="#{cap.state}" selfSorted="false">
<f:facet name="header">
<h:outputText value="State Name"/>
</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
</rich:dataTable>
...
"sortOrder"属性被用来改变列的排序顺序,通过外部控制手段。
可取的值有:
n "ASCENDING" ——用升序排序列
n "DESCENDING" ——用升序排序列
n "UNSORTED" ——不排序列
例子:
...
<h:form>
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" width="300px">
<f:facet name="header">
<h:outputText value="Sorting Example"/>
</f:facet>
<rich:column sortBy="#{cap.state}" sortOrder="ASCENDING">
<f:facet name="header">
<h:outputText value="State Name"/>
</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column sortBy="#{cap.name}" sortOrder="DESCENDING">
<f:facet name="header">
<h:outputText value="State Capital"/>
</f:facet>
<h:outputText value="#{cap.name}"/>
</rich:column>
</rich:dataTable>
</h:form>
...
结果如下:
图6.18 使用"sortOrder"属性的<rich:column>
在上面的例子中,第一列用降序排序。但是如果重复行出现在表中时,相对的第二列用升序排序。
如果列值复杂,"sortOrder"属性应该指向一个包含排序顺序的 bean属性。对于<rich:columns>如何实现它,请看LiveDemo [http://livedemo.exadel.com/richfaces-demo/richfaces/columns.jsf?c=columns&tab=usage]
使用"rich-sort-icon"类,你也可以定制排序图标元素。
[注意,为了排序非英语值的列,你可以在你的web.xml 文件中添加org.richfaces.datatableUsesViewLocale上下文参数。它的值应该为"true"]
[注意,"sortBy"和"selfSorted"属性与<rich:dataTable>组件一起使用。"selfSorted"可以与<rich:extendedDataTable>组件一起使用。
"sortable"和 "sortExpression"与<rich:scrollableDataTable>组件一起使用。]
6.6.1.4.2 过滤
有两种方法过滤列值:
n 使用内置过滤。它利用startsWith()函数制造过滤。在这种情况下,你需要在你希望过滤的列定义"filterBy"属性。这个属性定义迭代对象的属性,在过滤处理时使用它。在"filterBy"属性中的表达式只能引用"var"属性声明的变量。对那些使用其他属性声明的,比如"rowKeyVar"属性,则不能引用。
"filterValue"属性被用来获得或改变当前过滤的值。在页面上可以使用初始过滤值定义它,或者作为值绑定在服务器上获得或改变它。如果 "filterValue"属性非空,在首次渲染时,从一开始表就会被过滤。
你可以使用"rich-filter-input" CSS类定制输入表单。
为了改变过滤事件,你可以在列上使用"filterEvent"属性,例如,"onblur"(默认值)。
如下所示:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" width="200px">
<f:facet name="header">
<h:outputText value="Sorting Example"/>
</f:facet>
<rich:column filterBy="#{cap.state}" filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="State Name"/>
</f:facet>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column filterBy="#{cap.name}" filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="State Capital"/>
</f:facet>
<h:outputText value="#{cap.name}"/>
</rich:column>
</rich:dataTable>
...
结果:
图6.19 内置过滤功能的使用。
n 使用外部过滤。在这种情况下,你需要编写你的定制过滤函数或表达式,以及定义控件。
"filterExpression"属性被用来定义求布尔值的表达式。这个表达式检查是否对象满足过滤条件。
"filterMethod"属性被用来定义方法绑定。这个方法访问对象参数,并返回布尔值。因此,这个方法也可以用来检查是否对象满足过滤条件。使用这个属性的最好方式,是用于实现你自己的复杂业务逻辑。
"filterExpression"和 "filterMethod"属性使用的简单例子,请看RichFaces LiveDemo页面: [http://livedemo.exadel.com/richfaces-demo/richfaces/filteringFeature.jsf?tab=ex-usage&cid=4110192]
6.6.1.5 参数数据
<rich:column> 属性表 [../../tlddoc/index.htmlrich/column.html]。
表6.30 组件关联的参数
名字 | 值 |
component-type | org.richfaces.Column |
component-class | org.richfaces.component.html.HtmlColumn |
component-family | org.richfaces.Column |
renderer-type | org.richfaces.renderkit.CellRenderer |
tag-class | org.richfaces.taglib.ColumnTag |
表6.31. Facets
Facet名字 | 描述 |
header | 定义页眉内容 |
footer | 定义页脚内容 |
定制<rich:column>的样式类和皮肤参数,与<rich:dataTable>组件相同。
在“定制样式类的定义”一节,你可以发现所有需要的有关样式类的信息。
6.6.1.6 关联的资源链接
组件的用法和它们的资源的例子,请浏览在RichFaces Livedemo的Column页面:[http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?c=column]
如何使用<rich:column> 的"rendered"属性,请看RichFaces Cookbook文章[http://www.jboss.org/community/docs/DOC-9607]的例子。
6.6.2 < rich:columnGroup >,从3.0.0版开始可用
6.6.2.1 描述
该组件在一行中合并列,用于组织一个表的复杂子部分。
6.6.2.2 主要功能
n 完美的皮肤表行和子元素。
n 在内部可以合并列和行。
n 利用Ajax可以更新一组有限的字符串。
6.6.2.3 使用细节
<rich:columnGroup>组件合并列集合,包裹它们到<tr>元素,并输出它们到一行。列合并为一组,与在对列使用"breakBefore" 属性移动到下行时的方式相同。因此,以下例子是一样的:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5" id="sublist">
<rich:column colspan="3">
<f:facet name="header">State Flag</f:facet>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:columnGroup>
<rich:column>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column >
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column >
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:columnGroup>
</rich:dataTable>
...
下面是一个没有分组的表示:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5" id="sublist">
<rich:column colspan="3">
<f:facet name="header">State Flag</f:facet>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column breakBefore="true">
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:dataTable>
....
结果:
图6.21 使用<rich:columnGroup>组件生成的表
也可以使用该组件在一个表中输出复杂的标题。例如,以下是一个添加复杂标题到整个表的一个facet例子:
...
<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5" id="sublist">
<f:facet name="header">
<rich:columnGroup>
<rich:column rowspan="2">
<h:outputText value="State Flag"/>
</rich:column>
<rich:column colspan="3">
<h:outputText value="State Info"/>
</rich:column>
<rich:column breakBefore="true">
<h:outputText value="State Name"/>
</rich:column>
<rich:column>
<h:outputText value="State Capital"/>
</rich:column>
<rich:column>
<h:outputText value="Time Zone"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:graphicImage value="#{cap.stateFlag}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.state}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.name}"/>
</rich:column>
<rich:column>
<h:outputText value="#{cap.timeZone}"/>
</rich:column>
</rich:dataTable>
...
在页面上生成的表如下所示:
图6.22 使用复杂标题的<rich:columnGroup>
6.6.2.4 参数数据
<rich:columnGroup>表属性[../../tlddoc/index.htmlrich/columnGroup.html]
表6.32 组件关联的参数
名字 | 值 |
component-type | org.richfaces.ColumnGroup |
component-class | org.richfaces.component.html.HtmlColumnGroup |
component-family | org.richfaces.ColumnGroup |
renderer-type | org.richfaces.ColumnGroupRenderer |
tag-class | org.richfaces.taglib.ColumnGroupTag |
定制<rich:columnGroup>的样式类和皮肤参数,与<rich:dataTable>组件相同。
在“定制样式类的定义”一节,你可以发现所有需要的有关样式类的信息。
6.6.2.5 相关联的资源链接
组件的用法和它们的资源的例子,请浏览在RichFaces Livedemo的<rich:columnGroup>页面:
[http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?c=columnGroup]
6.6.3 < rich:columns >,从3.0.0版开始可用
6.6.3.1 描述
<rich:columns>组件,允许你根据你的模型创建动态列集。
图6.23 <rich:columns>组件
6.6.3.2 主要功能
n 高度定制感观
n 动态表创建
n 可以利用"colspan"和"breakBefore"的帮助合并列
n 可以利用 "rowspan"的帮助合并行
n 排序列值
n 过滤列值
6.6.3.3 使用细节
<rich:columns>组件从数据模型获取一个列表,并输出到在页面上的<rich:dataTable>内部的相应的列集。可以与<rich:columns>组件一起使用 "header"和 "footer" facets。
"value"和"var"属性用来访问集合的值。
下面是一个简单的例子:
...
<rich:dataTable value="#{dataTableScrollerBean.model}" var="model" width="750">
<rich:columns value="#{dataTableScrollerBean.columns}" var="columns" index="ind" id="column#{ind}">
<f:facet name="header">
<h:outputText value="#{columns.header}" />
</f:facet>
<h:outputText value="#{model[ind].model} " />
<h:outputText value="#{model[ind].mileage} miles " />
<h:outputText value="#{model[ind].price}$" />
</rich:columns>
</rich:dataTable>
...
"columns"属性定义列数。
"rowspan"属性定义被显示的行数。如果这个属性的值为0,在表中所有剩余的行被显示在页面上。
"begin"属性包含第一个迭代项。注意,它从0开始迭代。
"end"属性包含最后一个迭代项。
利用上面描述的这些属性的帮助,你可以定制输出,例如,定义那个列和多少行显示在页面上。
<rich:columns>组件并不阻碍使用<rich:column>。下面的例子,一个列用任何方式渲染,而另一个从模型中选取。
例子:
...
<rich:dataTable value="#{dataTableScrollerBean.model}" var="model" width="500px" rows="5">
<f:facet name="header">
<h:outputText value="Cars Available"></h:outputText>
</f:facet>
<rich:columns value="#{dataTableScrollerBean.columns}" var="columns" index="ind">
<f:facet name="header">
<h:outputText value="#{columns.header}" />
</f:facet>
<h:outputText value="#{model[ind].model} " />
</rich:columns>
<rich:column>
<f:facet name="header">
<h:outputText value="Price" />
</f:facet>
<h:outputText value="Price" />
</rich:column>
<rich:columns value="#{dataTableScrollerBean.columns}" var="columns" index="ind">
<f:facet name="header">
<h:outputText value="#{columns.header}" />
</f:facet>
<h:outputText value="#{model[ind].mileage}$" />
</rich:columns>
</rich:dataTable>
...
对<rich:columns>,可以利用"colspan"、"rowspan"和"breakBefore"属性的帮助,分组列为一列或一行,就象<rich:columnt> 组件执行的方法一样。
[注意,<rich:columns>标签在组件树构建处理期间被初始化。这个处理在“渲染响应”JSF阶段的页面渲染之前。要完全地渲染组件,需要在组件树构建时,初始化它所有的变量。如果<rich:columns> 使用的变量从其他组件传入,如果这些变量在渲染期间被初始化,一个javax.servlet.jsp.JspTagException异常发生。因此,当<rich:columns>请求这些变量时,他们并不存在。使用<c:forEach> JSP标准标签作为替代。比较下面两个例子。
这个代码调用异常:
...
<rich:dataTable value="#{bean.data}" var="var">
<rich:columns value="#{var.columns}">
...
</rich:columns>
</rich:dataTable>
...
这个代码正常运行:
...
<c:forEach items="#{bean.data}" var="var">
<rich:columns value="#{var.columns}">
...
</rich:columns>
</c:forEach>
...
]
[注意,从3.3.0GA开始,<rich:columns>]需要显式定义子组件的"id",以确保解码处理正常运行。你如何为子组件定义唯一"id",如下所示:
...
<rich:columns value="#{bean.columns}" var="col" index="ind" ... >
<h:inputText id="input#{ind}" value="">
<a4j:support id="support#{ind}" event="onchange" reRender="someId" />
</h:inputText>
</rich:columns>
...
只有如上面的Ajax所示定义"id",在onchange事件之后,才会象你希望的一样被处理。]
<rich:columns>组件的排序和过滤,与 <rich:column>运行的相同。请看“排序和过滤”一节。
6.6.3.4 参数数据
<rich:columns> 属性表 [../../tlddoc/index.htmlrich/columns.html]。
表6.33 组件关联的参数
名字 | 值 |
component-type | org.richfaces.Column |
tag-class | org.richfaces.taglib.ColumnsTagHandler |
表6.34. Facets
Facet名字 | 描述 |
header | 定义页眉内容 |
footer | 定义页脚内容 |
定制<rich:columns>的样式类和皮肤参数,与<rich:dataTable>组件相同。
在“定制样式类的定义”一节,你可以发现所有需要的有关样式类的信息。
6.6.3.5 相关联的资源链接
有关<rich:columns>组件用法的其他信息,你可以查看组件LiveDemo页面:
[http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?c=columns]
6.6.4 < rich:dataDefinitionList >,从3.0.0版开始可用
6.6.4.1 描述
该组件用于渲染定义列表,它允许从数据模型选择数据,并且获得了内置Ajax更新支持。
图6.24 <rich:dataDefinitionList>组件
6.6.4.2 主要功能
l 完美的皮肤表行和子元素
l 可以利用Ajax更新一组有限的行
l 可以从模型动态地接受值
6.6.4.3 使用细节
<rich:dataDefinitionList>组件允许根据模型生成定义列表。
该组件具有"term" facet,它相应于<dt> HTML元素的"type"参数。
下面是一个例子:
...
<h:form>
<rich:dataDefinitionList var="car" value="#{dataTableScrollerBean.allCars}" rows="5" first="4" title="Cars">
<f:facet name="term">
<h:outputText value="#{car.make} #{car.model}"></h:outputText>
</f:facet>
<h:outputText value="Price:" styleClass="label"></h:outputText>
<h:outputText value="#{car.price}" /><br/>
<h:outputText value="Mileage:" styleClass="label"></h:outputText>
<h:outputText value="#{car.mileage}" /><br/>
</rich:dataDefinitionList>
</h:form>
...
结果为:
图6.25 使用了"term" facet的<rich:dataDefinitionList>组件
在上面例子中,"rows"属性限定了列表输出元素的数量。
"first"属性定义输出的第一个元素。"title"用于一个弹出标题。
可以利用Ajax局部更新<rich:dataDefinitionList>组件。"ajaxKeys"属性指向一个对象(java.util.Set)),它应该包含在Ajax请求之后被更新的行键。<rich:dataList>组件的"ajaxKeys"属性的使用例子,看RichFacs Cookbook文章 [http://www.jboss.org/community/wiki/UsingtheajaxKeysattributeforrichdataList]
6.6.4.4 参数数据
<rich:dataDefinitionList>属性表[../tlddoc/index.htmlrich/dataDefinitionList.html]
表6.35 组件关联的参数
名字 | 值 |
component-type | org.richfaces.DataDefinitionList |
component-class | org.richfaces.component.html.HtmlDataDefinitionList |
component-family | org.richfaces.DataDefinitionList |
renderer-type | org.richfaces.DataDefinitionListRenderer |
tag-class | org.richfaces.taglib.DataDefinitionListTag |
表6.36 无皮肤参数的样式类(selectors)
类名 | 描述 |
|
|
.rich-deflist定义html | <dl> | 元素的样式 |
|
.rich-definition定义 | html | <dd> | 元素的样式 |
.rich-definition-term定义html | <dt>元素的样式 |
|
|
在“定制样式类的定义”一节,你可以发现所有需要的有关样式类的信息。
6.6.4.5 相关联的资源链接
组件的用法和它们的资源的例子,请浏览在RichFaces Livedemo的<rich:dataDefinitionList>页面:[http://livedemo.exadel.com/richfaces-demo/richfaces/dataLists.jsf?c=dataDefinitionList]
6.6.5 < rich:dataFilterSlider >,从3.0.0版开始可用
6.6.5.1 描述
一个基于滑块动作的组件,用于过滤表数据。
图6.26 <rich:dataFilterSlider>组件
6.6.5.2 主要功能
n 依赖于它的子女的值过滤任何基于UIData的组件。
n 完全可换肤的控件和输入元素。
n 可选的,带有一个管理的属性位置的值文本字段。
n 可选的,在一个页面上废弃的组件。
n 可选的,只要拖动句柄就显示当前值的工具提示。
n 鼠标移动后,拖动的状态是稳定的。
n 可选的,如果文本输入字段出现,可以手工输入。
n 手工输入验证。
6.6.5.3 使用细节
dataFilterSlider组件使用"for"属性绑定到某些UIData组件,并过滤在一个表中的数据。
例子:
...
<rich:dataFilterSlider sliderListener="#{mybean.doSlide}"
startRange="0"
endRange="50000"
increment="10000"
handleValue="1"
for="carIndex"
forValRef="inventoryList.carInventory"
filterBy="getMileage" />
...
<h:dataTable id="carIndex">
...
</h:dataTable>
...
在上面的例子中,不同的两个属性用于过滤:
n "forValRef" 是一个字符串,它被用于目标UIData组件的一个值属性。旨在重新设置UIData组件支持由后台bean提供的原始列表。
n "filterBy" 是一个对象成员的getter,用于与滑块值的比较。它的值用于结果过滤。
"handleValue"属性,用于保存在dataFilterSlider上当前的句柄的位置。根据当前的值,适当的值,根据"filterBy"定义的getter获得的,被过滤。
一个更重要的属性是"storeResults",它准许dataFilterSlider组件在会话中保存UIData目标对象。
如果组件需要根据句柄状态改变的事件提交表单,使用"submitOnSlide"属性。当属性定义为"true",根据事件提交被定义。
有关"process"属性的用法的信息,请查看“决定处理什么”指南一节。
6.6.5.4 参数数据
<rich:dataFilterSlider>属性表 [../../tlddoc/index.htmlrich/dataFilterSlider.html]。
表6.37 组件关联的参数
名字 | 值 |
component-type | org.richfaces.DataFilterSlider |
component-class | org.richfaces.component.html.HtmlDataFilterSlider |
component-family | org.richfaces.DataFilterSlider |
renderer-type | org.richfaces.DataFilterSliderRenderer |
tag-class | org.richfaces.taglib.dataFilterSliderTag |
表6.38 使用相应皮肤参数的样式类(selectors)
类名(selectors) | 描述 | 皮肤参数 | CSS属性映射 |
.range, .rich-dataFilterSlider-range | 定义组件范围的样式 | subBorderColor, panelBorderColor | border-color |
.slider-input-field, .rich-dataFilterSlider-input-field | 定义组件输入字段的样式 | controlBackgroundColor | background-color |
generalFamilyFont | font-family | ||
generalSizeFont | font-size | ||
controlTextColor | color | ||
panelBorderColor | border-color | ||
subBorderColor | border-bottom-color, border-right-color |
表6.39 无皮肤参数的样式类(selectors)
类名 | 描述 |
.trailer, .rich-dataFilterSlider-trailer | 定义组件尾部(trailer)的样式 |
.track, .rich-dataFilterSlider-track | 定义组件轨迹(track)的样式 |
在“定制样式类的定义”一节,你可以发现所有需要的有关样式类的信息。
6.6.5.5 相关联的资源链接
组件的用法和它们的资源的例子,请浏览在RichFaces Livedemo的<rich:dataFilterSlider>页面:
[http://livedemo.exadel.com/richfaces-demo/richfaces/dataFilterSlider.jsf?c=dataFilterSlider]
------------------------------------------------
http://lalalabs.blog.163.com/blog/static/94325202201052101621915/