UIExtendedDataTable getRowKey always null
luedinski Sep 30, 2011 3:22 AMHi folks,
i started with Richfaces and JSF a few months ago and it's really fun. I always was able to find a solution for any problem, but now i'm stuck. Maybe someone has an idea on the following problem.
I use some ExtendedDataTables to implement filters in a project. I use the example from the JBoss showcase. The Problem is, that in my backing bean, the getRowKey Method always returns null. Here is my code:
<rich:extendedDataTable frozenColumns="2"
styleClass="filterTable"
value="#{jobspecFilterController.getBusinessList()}"
var="business" rendered="true" selectionMode="single"
id="bussinessTable" selection="#{jobspecFilterController.businessSelection}">
<a4j:ajax execute="@form" event="selectionchange"
listener="#{jobspecFilterController.selectionListener}"
render="secondTable"/>
<f:facet name="header">
<h:outputText value="Business" />
</f:facet>
<rich:column width="30px">
<f:facet name="header">
<h:selectBooleanCheckbox id="selectAllBusinesses"
title="select all"
value="#{jobspecFilterController.selectAllBusinesses}">
<a4j:ajax event="valueChange"
listener="#{jobspecFilterController.checkboxListener}"
execute="@form" render="@form"
onbegin="#{rich:component('waitPopup')}.show()"
oncomplete="#{rich:component('waitPopup')}.hide()" />
</h:selectBooleanCheckbox>
</f:facet>
<h:selectBooleanCheckbox id="selectBusiness"
value="#{jobspecFilterController.businesses[business]}">
<a4j:ajax event="valueChange"
listener="#{jobspecFilterController.checkboxListener}"
execute="@form" render="@form"
onbegin="#{rich:component('waitPopup')}.show()"
oncomplete="#{rich:component('waitPopup')}.hide()" />
<f:attribute name="node" value="#{business}" />
</h:selectBooleanCheckbox>
</rich:column>
<rich:column width="200px">
<f:facet name="header"></f:facet>
<h:commandLink id="linkBusiness" value="#{business.name}"
action="#{jobspecFilterController.fillTable(business)}"
rendered="true" />
</rich:column>
</rich:extendedDataTable>
public void selectionListener(AjaxBehaviorEvent event) {
if (!businessSelection.isEmpty()) {
UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent();
Object originalKey = dataTable.getRowKey();
String id = dataTable.getId();
// do something...
dataTable.setRowKey(originalKey);
}
}
Thanks in advance!