Problem with rich:dataTable row delete - ajax
ivancosta Mar 20, 2012 3:49 PMHi,
I'm migrating from RF 3.3.3 to RF 4.2. Now rich:dataTable (binded to list of entities) inside ui:fragment aren´t working properly.
THE PROBLEM:
commandLink to remove row from rich:dataTable via ajax is always getting no row available, even when there are plenty of them!
if (tabelaProprietarios.isRowAvailable()) {
PessoaVO vo = (PessoaVO)tabelaProprietarios.getRowData();
listaProprietarios.remove(vo);
But, if changed from rich:dataTable to h:dataTable
and in binding, from org.richfaces.component.UIDataTable to HtmlDataTable
the commandLink deletes the row and updates the datatable nicely!
What am I doing wrong? Am I missing something?
Thanks in advance
Ivan
=============================================
CODE:
Managed bean is @ViewScoped, Mojarra 2.1.7, Tomcat 7.0.26
datatable is binded to:
private transient org.richfaces.component.UIDataTable tabelaProprietarios;
<ui:include src="/template/selecionaPessoa.xhtml">
<ui:param name="listaDePessoas" value="#{propriedadeRural.proprietarios}"/>
<ui:param name="idDaTabela" value="tabelaProprietario" />
<ui:param name="tabelaBinding" value="#{propriedadeRural.tabelaProprietarios}" />
<ui:param name="nomeDoBean" value="#{propriedadeRural}" />
<ui:param name="actionRemove" value="removeProprietario" />
</ui:include>
/template/selecionaPessoa.xhtml
<ui:fragment>
<table>
<tr>
<td class="primeiraColuna">
</td>
<td width="60%">
<div>
<a4j:region>
<h:panelGroup id="idPanelGroupSelecionaPessoa">
<rich:dataTable id="#{idDaTabela}"
value="#{listaDePessoas}"
binding="#{tabelaBinding}"
style="width: 90%;"
var="item" >
<rich:column style="width: 10%">
<h:outputText value="#{item.id}" />
</rich:column>
<rich:column style="width: 80%">
<h:commandLink value="#{item.nome}" action="#{buscaPessoa.editar}" >
<f:param name="idPessoaEscolhida" value="#{item.id}" >
</f:param>
<f:param name="tipoPessoaEscolhida" value="#{item.tpPessoa}">
</f:param>
</h:commandLink>
</rich:column>
<rich:column>
<h:commandLink value="Remover">
<f:ajax listener="#{nomeDoBean[actionRemove]}"
render="@form" >
</f:ajax>
</h:commandLink>
</rich:column>
</rich:dataTable>
</h:panelGroup>
</a4j:region>
</div>
</td>
</tr>
</table>
<ui:fragment>