Olás!
Estou tentando implementar a edição de células em um tabela com o Primefaces. Consigo editar o valor da célula, porém o objeto não é atualizado. Segue código:
<p:dataTable id="tabela_atividades_fiscal" var="atividade" editable="true"
value="#{programacaoDiariasPorFiscalBean.programacaoAtividadeFiscalList}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
emptyMessage="#{msg.info_nenhum_registro_encontrado}">
<f:facet name="header"> Lista de Atividades x Fiscal </f:facet>
<p:ajax event="rowEdit" listener="#{programacaoDiariasPorFiscalBean.onEditRow}" update="@this, :frm_programacao_diarias_fiscal:messages" />
<p:column headerText="Atividade">
<h:outputText value="#{atividade.descricao}" />
</p:column>
<p:column headerText="KM" style="text-align:center;">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{atividade.km}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{atividade.km}" immediate="true" style="width:100%" converterMessage="KM: o valor informado não é do tipo correto.">
<f:convertNumber />
</h:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="text-align:center; width:5em;">
<p:rowEditor />
</p:column>
</p:dataTable>
public void onEditRow(RowEditEvent event) {
this.programacaoAtividadeFiscal = (ProgramacaoAtividadeFiscal) event.getObject();
FacesMessage msg = new FacesMessage("Edited", " Km: " + this.programacaoAtividadeFiscal.getKm());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
Tentei também pegar o valor do objeto no método onEditRow de outra forma, mas sem sucesso:
DataTable dataTable = (DataTable) event.getSource();
ProgramacaoAtividadeFiscal p = (ProgramacaoAtividadeFiscal) dataTable.getRowData();
Encontrei vários posts com o mesmo problema, mas nenhuma solução. Poderiam me dar um help?
OBS.: Utilizo a versão 3.4 do Primefaces.
