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!