Author: lfryc(a)redhat.com
Date: 2010-12-02 06:17:12 -0500 (Thu, 02 Dec 2010)
New Revision: 20297
Modified:
modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataTableBean.java
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/filtering.xhtml
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/simple.xhtml
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-column.xhtml
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-component-control.xhtml
Log:
updated rich:dataTable samples in order to be compatible with rich:extendedDataTable
samples (RFPL-912)
Modified:
modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataTableBean.java
===================================================================
---
modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataTableBean.java 2010-12-02
11:16:16 UTC (rev 20296)
+++
modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataTableBean.java 2010-12-02
11:17:12 UTC (rev 20297)
@@ -28,46 +28,55 @@
import java.util.Map;
import javax.annotation.PostConstruct;
-
import javax.faces.bean.ManagedBean;
-import javax.faces.bean.SessionScoped;
-import org.richfaces.component.SortOrder;
+import javax.faces.bean.ViewScoped;
import org.ajax4jsf.model.DataComponentState;
import org.richfaces.component.UIDataTable;
+import org.richfaces.component.UIDataTableBase;
import org.richfaces.model.Filter;
import org.richfaces.tests.metamer.Attributes;
+import org.richfaces.tests.metamer.ColumnSortingMap;
import org.richfaces.tests.metamer.model.Employee;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Managed bean for rich:dataTable.
- *
+ *
* @author <a href="mailto:ppitonak@redhat.com">Pavol Pitonak</a>
* @version $Revision$
*/
@ManagedBean(name = "richDataTableBean")
-@SessionScoped
+@ViewScoped
public class RichDataTableBean implements Serializable {
private static final long serialVersionUID = 4814439475400649809L;
private static Logger logger;
private Attributes attributes;
+ private UIDataTable binding;
private DataComponentState dataTableState;
private Map<Object, Integer> stateMap = new HashMap<Object, Integer>();
private int page = 1;
// true = model, false = empty table
private boolean state = true;
+
// sorting
- private SortOrder capitalsOrder = SortOrder.unsorted;
- private SortOrder statesOrder = SortOrder.unsorted;
+ private ColumnSortingMap sorting = new ColumnSortingMap() {
+ private static final long serialVersionUID = 1L;
+
+ protected UIDataTableBase getBinding() {
+ return binding;
+ }
+
+ protected Attributes getAttributes() {
+ return attributes;
+ }
+ };
+
// filtering
- private String sexFilter;
- private String nameFilter;
- private String titleFilter;
- private int kidsFilter;
- private int kidsFilter2;
+ private Map<String, Object> filtering = new HashMap<String, Object>();
+
// facets
private Map<String, String> facets = new HashMap<String, String>();
@@ -84,7 +93,7 @@
attributes.setAttribute("rendered", true);
attributes.setAttribute("rows", 10);
attributes.get("sortPriority").setType(Collection.class);
-
+
// hidden attributes
attributes.remove("filteringListeners");
attributes.remove("sortingListeners");
@@ -98,7 +107,7 @@
attributes.remove("rowKey");
attributes.remove("rowKeyConverter");
attributes.remove("relativeRowIndex");
-
+
// TODO these must be tested in other way
attributes.remove("componentState");
attributes.remove("rowKeyVar");
@@ -113,7 +122,7 @@
attributes.remove("header");
attributes.remove("footer");
attributes.remove("noData");
-
+
// facets initial values
facets.put("noData", "There is no data.");
facets.put("caption", "Caption");
@@ -123,6 +132,14 @@
facets.put("columnCapitalHeader", "Capital Header");
facets.put("columnCapitalFooter", "Capital Footer");
}
+
+ public void setBinding(UIDataTable binding) {
+ this.binding = binding;
+ }
+
+ public UIDataTable getBinding() {
+ return binding;
+ }
public Attributes getAttributes() {
return attributes;
@@ -168,91 +185,25 @@
return new Date();
}
- public SortOrder getCapitalsOrder() {
- return capitalsOrder;
+ public Map<String, String> getFacets() {
+ return facets;
}
- public void setCapitalsOrder(SortOrder capitalsOrder) {
- this.capitalsOrder = capitalsOrder;
+ public ColumnSortingMap getSorting() {
+ return sorting;
}
- public SortOrder getStatesOrder() {
- return statesOrder;
+ public Map<String, Object> getFiltering() {
+ return filtering;
}
- public void setStatesOrder(SortOrder statesOrder) {
- this.statesOrder = statesOrder;
- }
-
- public String getSexFilter() {
- return sexFilter;
- }
-
- public void setSexFilter(String sexFilter) {
- this.sexFilter = sexFilter;
- }
-
- public String getNameFilter() {
- return nameFilter;
- }
-
- public void setNameFilter(String nameFilter) {
- this.nameFilter = nameFilter;
- }
-
- public String getTitleFilter() {
- return titleFilter;
- }
-
- public void setTitleFilter(String titleFilter) {
- this.titleFilter = titleFilter;
- }
-
- public int getKidsFilter() {
- return kidsFilter;
- }
-
- public void setKidsFilter(int kidsFilter) {
- this.kidsFilter = kidsFilter;
- }
-
- public int getKidsFilter2() {
- return kidsFilter2;
- }
-
- public void setKidsFilter2(int kidsFilter2) {
- this.kidsFilter2 = kidsFilter2;
- }
-
- public void sortByCapitals() {
- statesOrder = SortOrder.unsorted;
- if (capitalsOrder.equals(SortOrder.ascending)) {
- setCapitalsOrder(SortOrder.descending);
- } else {
- setCapitalsOrder(SortOrder.ascending);
- }
- }
-
- public void sortByStates() {
- capitalsOrder = SortOrder.unsorted;
- if (statesOrder.equals(SortOrder.ascending)) {
- setStatesOrder(SortOrder.descending);
- } else {
- setStatesOrder(SortOrder.ascending);
- }
- }
-
- public void sortReset() {
- setStatesOrder(SortOrder.ascending);
- setCapitalsOrder(SortOrder.unsorted);
- }
-
public Filter<?> getFilterSexImpl() {
return new Filter<Employee>() {
public boolean accept(Employee e) {
- String sex = getSexFilter();
- if (sex == null || sex.length() == 0 ||
sex.equalsIgnoreCase("all") || sex.equalsIgnoreCase(e.getSex().toString())) {
+ String sex = (String) getFiltering().get("sex");
+ if (sex == null || sex.length() == 0 ||
sex.equalsIgnoreCase("all")
+ || sex.equalsIgnoreCase(e.getSex().toString())) {
return true;
}
return false;
@@ -260,20 +211,4 @@
};
}
- public Filter<?> getFilterKidsImpl() {
- return new Filter<Employee>() {
-
- public boolean accept(Employee e) {
- int kids = getKidsFilter();
- if (e.getNumberOfKids() >= kids) {
- return true;
- }
- return false;
- }
- };
- }
-
- public Map<String, String> getFacets() {
- return facets;
- }
}
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/filtering.xhtml
===================================================================
---
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/filtering.xhtml 2010-12-02
11:16:16 UTC (rev 20296)
+++
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/filtering.xhtml 2010-12-02
11:17:12 UTC (rev 20297)
@@ -50,25 +50,13 @@
<ui:define name="component">
<rich:dataTable id="richDataTable"
-
filterVar="#{richDataTableBean.attributes['filterVar'].value}"
-
filteringListeners="#{richDataTableBean.attributes['filteringListeners'].value}"
first="#{richDataTableBean.attributes['first'].value}"
-
iterationState="#{richDataTableBean.attributes['iterationState'].value}"
-
iterationStatusVar="#{richDataTableBean.attributes['iterationStatusVar'].value}"
keepSaved="#{richDataTableBean.attributes['keepSaved'].value}"
noDataLabel="#{richDataTableBean.attributes['noDataLabel'].value}"
-
relativeRowIndex="#{richDataTableBean.attributes['relativeRowIndex'].value}"
rendered="#{richDataTableBean.attributes['rendered'].value}"
-
rowAvailable="#{richDataTableBean.attributes['rowAvailable'].value}"
-
rowCount="#{richDataTableBean.attributes['rowCount'].value}"
-
rowData="#{richDataTableBean.attributes['rowData'].value}"
-
rowIndex="#{richDataTableBean.attributes['rowIndex'].value}"
-
rowKey="#{richDataTableBean.attributes['rowKey'].value}"
-
rowKeyConverter="#{richDataTableBean.attributes['rowKeyConverter'].value}"
rows="#{richDataTableBean.attributes['rows'].value}"
sortMode="#{richDataTableBean.attributes['sortMode'].value}"
sortPriority="#{richDataTableBean.attributes['sortPriority'].value}"
-
sortingListeners="#{richDataTableBean.attributes['sortingListeners'].value}"
value="#{richDataTableBean.state ? model.employees :
null}"
var="record"
@@ -84,11 +72,11 @@
<br/>
<h:outputText id="columnHeaderSexType"
value="(filter)" />
<br/>
- <h:selectOneMenu id="columnHeaderSexInput"
value="#{richDataTableBean.sexFilter}" >
+ <h:selectOneMenu id="columnHeaderSexInput"
value="#{richDataTableBean.filtering['sex']}" >
<f:selectItem itemValue="ALL"
itemLabel="all"/>
<f:selectItem itemValue="FEMALE"
itemLabel="female"/>
<f:selectItem itemValue="MALE"
itemLabel="male"/>
- <a4j:ajax render="commonGrid"
execute="@this" event="change"/>
+ <a4j:ajax render="commonGrid"
event="change"/>
</h:selectOneMenu>
</h:panelGroup>
</f:facet>
@@ -101,15 +89,15 @@
</rich:column>
- <rich:column id="columnName"
filterValue="#{richDataTableBean.nameFilter}"
filterExpression="#{fn:containsIgnoreCase(record.name,
richDataTableBean.nameFilter)}">
+ <rich:column id="columnName"
filterExpression="#{fn:containsIgnoreCase(record.name,
richDataTableBean.filtering['name'])}">
<f:facet name="header">
<h:outputText id="columnHeaderName"
value="Name" />
<br/>
<h:outputText id="columnHeaderNameType"
value="(expression contains ignore case)" />
<br/>
- <h:inputText id="columnHeaderNameInput"
value="#{richDataTableBean.nameFilter}">
- <a4j:ajax render="commonGrid"
execute="@this" event="change"/>
- </h:inputText>
+ <h:inputText id="columnHeaderNameInput"
value="#{richDataTableBean.filtering['name']}">
+ <a4j:ajax render="commonGrid"
event="change"/>
+ </h:inputText>
</f:facet>
<h:outputText value="#{record.name}" />
@@ -118,14 +106,14 @@
</f:facet>
</rich:column>
- <rich:column id="columnTitle"
filterValue="#{richDataTableBean.titleFilter}"
filterExpression="#{richDataTableBean.titleFilter == null ||
richDataTableBean.titleFilter == '' || record.title ==
richDataTableBean.titleFilter}">
+ <rich:column id="columnTitle"
filterExpression="#{richDataTableBean.filtering['title'] == null ||
richDataTableBean.filtering['title'] == '' || record.title ==
richDataTableBean.filtering['title']}">
<f:facet name="header">
<h:outputText id="columnHeaderTitle"
value="Title" />
<br/>
<h:outputText id="columnHeaderTitleType"
value="(expression equals)" />
<br/>
- <h:inputText id="columnHeaderTitleInput"
value="#{richDataTableBean.titleFilter}">
- <a4j:ajax render="commonGrid"
execute="@this" event="change"/>
+ <h:inputText id="columnHeaderTitleInput"
value="#{richDataTableBean.filtering['title']}">
+ <a4j:ajax render="commonGrid"
event="change"/>
</h:inputText>
</f:facet>
@@ -135,14 +123,14 @@
</f:facet>
</rich:column>
- <rich:column id="columnNumberOfKids"
filter="#{richDataTableBean.filterKidsImpl}">
+ <rich:column id="columnNumberOfKids1"
filterExpression="#{empty richDataTableBean.filtering['numberOfKids1'] ||
record.numberOfKids >= richDataTableBean.filtering['numberOfKids1']}">
<f:facet name="header">
<h:outputText id="columnHeaderNumberOfKids"
value="Number of Kids" />
<br/>
<h:outputText id="columnHeaderNumberOfKidsType"
value="(expression >=)" />
<br/>
- <rich:inputNumberSpinner
id="columnHeaderNumberOfKidsInput"
value="#{richDataTableBean.kidsFilter}" minValue="0"
maxValue="5" cycled="true">
- <a4j:ajax render="commonGrid"
execute="@this"/>
+ <rich:inputNumberSpinner id="spinnerFilter"
minValue="0" maxValue="6" cycled="false"
value="#{richDataTableBean.filtering['numberOfKids1']}">
+ <a4j:ajax render="commonGrid" />
</rich:inputNumberSpinner>
</f:facet>
@@ -158,9 +146,11 @@
<br/>
<h:outputText id="columnHeaderNumberOfKids2Type"
value="(expression <)" />
<br/>
- <rich:inputNumberSlider
id="columnHeaderNumberOfKids2Input"
value="#{richDataTableBean.kidsFilter2}" minValue="0"
maxValue="5" showInput="false">
- <a4j:ajax render="commonGrid"
execute="@this"/>
+ <rich:inputNumberSlider id="sliderFilter"
minValue="0" maxValue="6"
value="#{richDataTableBean.filtering['numberOfKids2']}">
+ <!-- <a4j:ajax render="commonGrid" /> -->
</rich:inputNumberSlider>
+ <br />
+ (DOESN'T WORK, NOT REPORTED YET (causes continuous refreshing
of page))
</f:facet>
<h:outputText value="#{record.numberOfKids}" />
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/simple.xhtml
===================================================================
---
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/simple.xhtml 2010-12-02
11:16:16 UTC (rev 20296)
+++
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/simple.xhtml 2010-12-02
11:17:12 UTC (rev 20297)
@@ -60,11 +60,11 @@
var="record"
- <rich:column id="columnState"
sortBy="#{record.state}">
+ <rich:column id="columnState">
<h:outputText value="#{record.state}" />
</rich:column>
- <rich:column id="columnCapital"
sortBy="#{record.name}">
+ <rich:column id="columnCapital">
<h:outputText value="#{record.name}" />
</rich:column>
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-column.xhtml
===================================================================
---
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-column.xhtml 2010-12-02
11:16:16 UTC (rev 20296)
+++
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-column.xhtml 2010-12-02
11:17:12 UTC (rev 20297)
@@ -50,26 +50,15 @@
<ui:define name="component">
<rich:dataTable id="richDataTable"
-
filterVar="#{richDataTableBean.attributes['filterVar'].value}"
-
filteringListeners="#{richDataTableBean.attributes['filteringListeners'].value}"
+ binding="#{richDataTableBean.binding}"
first="#{richDataTableBean.attributes['first'].value}"
-
iterationState="#{richDataTableBean.attributes['iterationState'].value}"
-
iterationStatusVar="#{richDataTableBean.attributes['iterationStatusVar'].value}"
keepSaved="#{richDataTableBean.attributes['keepSaved'].value}"
noDataLabel="#{richDataTableBean.attributes['noDataLabel'].value}"
-
relativeRowIndex="#{richDataTableBean.attributes['relativeRowIndex'].value}"
rendered="#{richDataTableBean.attributes['rendered'].value}"
-
rowAvailable="#{richDataTableBean.attributes['rowAvailable'].value}"
-
rowCount="#{richDataTableBean.attributes['rowCount'].value}"
-
rowData="#{richDataTableBean.attributes['rowData'].value}"
-
rowIndex="#{richDataTableBean.attributes['rowIndex'].value}"
-
rowKey="#{richDataTableBean.attributes['rowKey'].value}"
-
rowKeyConverter="#{richDataTableBean.attributes['rowKeyConverter'].value}"
rows="#{richDataTableBean.attributes['rows'].value}"
sortMode="#{richDataTableBean.attributes['sortMode'].value}"
sortPriority="#{richDataTableBean.attributes['sortPriority'].value}"
-
sortingListeners="#{richDataTableBean.attributes['sortingListeners'].value}"
- value="#{richDataTableBean.state ? model.capitals :
null}"
+ value="#{richDataTableBean.state ? model.employees :
null}"
var="record"
@@ -77,26 +66,33 @@
<h:outputText value="There is no data."
style="color: red;"/>
</f:facet>
- <rich:column id="columnState"
sortBy="#{record.state}"
sortOrder="#{richDataTableBean.statesOrder}">
+ <rich:column id="columnSex" sortBy="#{record.sex}"
sortOrder="#{richDataTableBean.sorting['columnSex'].order}">
<f:facet name="header">
- <a4j:commandLink id="sortStates"
value="State" render="richDataTable"
action="#{richDataTableBean.sortByStates}"/>
+ <a4j:commandLink id="sortBySex"
value="Sex" render="richDataTable"
action="#{richDataTableBean.sorting['columnSex'].reverseOrder}" />
</f:facet>
+ <h:graphicImage library="images" name="#{record.sex
== 'MALE' ? 'male.png' : 'female.png'}" />
+ </rich:column>
- <h:outputText value="#{record.state}" />
- <f:facet name="footer">
- <h:outputText id="columnFooterState"
value="State" />
+
+ <rich:column id="columnName"
sortBy="#{record.name}"
sortOrder="#{richDataTableBean.sorting['columnName'].order}">
+ <f:facet name="header">
+ <a4j:commandLink id="sortByName" value="Name"
render="richDataTable"
action="#{richDataTableBean.sorting['columnName'].reverseOrder}" />
</f:facet>
+ <h:outputText value="#{record.name}" />
</rich:column>
- <rich:column id="columnCapital"
sortBy="#{record.name}" sortOrder="#{richDataTableBean.capitalsOrder}"
sortingListeners="#{richDataTableBean.sortingListener}">
+ <rich:column id="columnTitle"
sortBy="#{record.title}"
sortOrder="#{richDataTableBean.sorting['columnTitle'].order}">
<f:facet name="header">
- <a4j:commandLink id="sortCapitals"
value="Capital" render="richDataTable"
action="#{richDataTableBean.sortByCapitals}"/>
+ <a4j:commandLink id="sortByTitle" value="Title"
render="richDataTable"
action="#{richDataTableBean.sorting['columnTitle'].reverseOrder}" />
</f:facet>
+ <h:outputText value="#{record.title}" />
+ </rich:column>
- <h:outputText value="#{record.name}" />
- <f:facet name="footer">
- <h:outputText id="columnFooterCapital"
value="Capital" />
+ <rich:column id="columnNumberOfKids"
sortBy="#{record.numberOfKids}"
sortOrder="#{richDataTableBean.sorting['columnNumberOfKids'].order}">
+ <f:facet name="header">
+ <a4j:commandLink id="sortByNumberOfKids" value="# of
Kids" render="richDataTable"
action="#{richDataTableBean.sorting['columnNumberOfKids'].reverseOrder}"
/>
</f:facet>
+ <h:outputText value="#{record.numberOfKids}" />
</rich:column>
<f:facet name="footer">
@@ -105,7 +101,7 @@
</rich:dataTable>
- <a4j:commandButton id="sortReset" value="Reset
Sorting" render="richDataTable"
action="#{richDataTableBean.sortReset}"/>
+ <a4j:commandButton id="sortReset" value="Reset
Sorting" action="#{richDataTableBean.sorting.clear}"
render="richDataTable" />
</ui:define>
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-component-control.xhtml
===================================================================
---
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-component-control.xhtml 2010-12-02
11:16:16 UTC (rev 20296)
+++
modules/tests/metamer/trunk/application/src/main/webapp/components/richDataTable/sorting-using-component-control.xhtml 2010-12-02
11:17:12 UTC (rev 20297)
@@ -50,26 +50,14 @@
<ui:define name="component">
<rich:dataTable id="richDataTable"
-
filterVar="#{richDataTableBean.attributes['filterVar'].value}"
-
filteringListeners="#{richDataTableBean.attributes['filteringListeners'].value}"
first="#{richDataTableBean.attributes['first'].value}"
-
iterationState="#{richDataTableBean.attributes['iterationState'].value}"
-
iterationStatusVar="#{richDataTableBean.attributes['iterationStatusVar'].value}"
keepSaved="#{richDataTableBean.attributes['keepSaved'].value}"
noDataLabel="#{richDataTableBean.attributes['noDataLabel'].value}"
-
relativeRowIndex="#{richDataTableBean.attributes['relativeRowIndex'].value}"
rendered="#{richDataTableBean.attributes['rendered'].value}"
-
rowAvailable="#{richDataTableBean.attributes['rowAvailable'].value}"
-
rowCount="#{richDataTableBean.attributes['rowCount'].value}"
-
rowData="#{richDataTableBean.attributes['rowData'].value}"
-
rowIndex="#{richDataTableBean.attributes['rowIndex'].value}"
-
rowKey="#{richDataTableBean.attributes['rowKey'].value}"
-
rowKeyConverter="#{richDataTableBean.attributes['rowKeyConverter'].value}"
rows="#{richDataTableBean.attributes['rows'].value}"
sortMode="#{richDataTableBean.attributes['sortMode'].value}"
sortPriority="#{richDataTableBean.attributes['sortPriority'].value}"
-
sortingListeners="#{richDataTableBean.attributes['sortingListeners'].value}"
- value="#{richDataTableBean.state ? model.capitals :
null}"
+ value="#{richDataTableBean.state ? model.employees :
null}"
var="record"
@@ -77,34 +65,49 @@
<h:outputText value="There is no data."
style="color: red;"/>
</f:facet>
- <rich:column id="columnState"
sortBy="#{record.state}"
sortOrder="#{richDataTableBean.statesOrder}">
+ <rich:column id="columnSex"
sortBy="#{record.sex}">
<f:facet name="header">
- <h:commandLink id="sortStates"
value="State">
+ <h:commandLink id="sortSexes"
value="Sex">
<rich:componentControl event="click"
target="richDataTable" operation="sort">
- <f:param value="columnState" />
+ <f:param value="columnSex" />
</rich:componentControl>
</h:commandLink>
</f:facet>
+ <h:graphicImage library="images" name="#{record.sex
== 'MALE' ? 'male.png' : 'female.png'}" />
+ </rich:column>
- <h:outputText value="#{record.state}" />
- <f:facet name="footer">
- <h:outputText id="columnFooterState"
value="State" />
+
+ <rich:column id="columnName"
sortBy="#{record.name}">
+ <f:facet name="header">
+ <h:commandLink id="sortByName"
value="Name">
+ <rich:componentControl event="click"
target="richDataTable" operation="sort">
+ <f:param value="columnName" />
+ </rich:componentControl>
+ </h:commandLink>
</f:facet>
+ <h:outputText value="#{record.name}" />
</rich:column>
- <rich:column id="columnCapital"
sortBy="#{record.name}"
sortOrder="#{richDataTableBean.capitalsOrder}">
+ <rich:column id="columnTitle"
sortBy="#{record.title}">
<f:facet name="header">
- <h:commandLink id="sortCapitals"
value="Capital">
+ <h:commandLink id="sortByTitle"
value="Title">
<rich:componentControl event="click"
target="richDataTable" operation="sort">
- <f:param value="columnCapital" />
+ <f:param value="columnTitle" />
</rich:componentControl>
</h:commandLink>
</f:facet>
+ <h:outputText value="#{record.title}" />
+ </rich:column>
- <h:outputText value="#{record.name}" />
- <f:facet name="footer">
- <h:outputText id="columnFooterCapital"
value="Capital" />
+ <rich:column id="columnNumberOfKids"
sortBy="#{record.numberOfKids}">
+ <f:facet name="header">
+ <h:commandLink id="sortByNumberOfKids"
value="Number of Kids">
+ <rich:componentControl event="click"
target="richDataTable" operation="sort">
+ <f:param value="columnNumberOfKids" />
+ </rich:componentControl>
+ </h:commandLink>
</f:facet>
+ <h:outputText value="#{record.numberOfKids}" />
</rich:column>
<f:facet name="footer">