Segue a tela https://snag.gy/PEQTNf.jpg mostrando que o sistema abre a célula para a edição mas não salva a alteração.
public void onRowEdit(RowEditEvent event) {
Empresa emp = ((Empresa) event.getObject());
System.out.println(emp.toString());
cadastrarEmpresaService.salvar(emp);
FacesMessage msg = new FacesMessage("Car Edited", ((Empresa) event.getObject()).getNome());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onRowCancel(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Edit Cancelled", ((Empresa) event.getObject()).getNome());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onCellEdit(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
if(newValue != null && !newValue.equals(oldValue)) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
segue o xhtml
<p:dataTable id="empresasTable"
value="#{pesquisaEmpresasBean.listaDeEmpresas}" var="empresa" editable="true" editMode="cell"
style="margin-top: 20px" emptyMessage="Empresa não encontrada"
paginatorPosition="bottom" rows="5" paginator="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport}
NextPageLink} {LastPageLink}"
currentPageReportTemplate="(#{msg.pagina} {currentPage} #{msg.de} {totalPages}) - (#{msg.registro}
{startRecord} #{msg.a} {endRecord}) - Total ({totalRecords} #{msg.registros})"
paginatorAlwaysVisible="true" rowsPerPageTemplate="10, 20, 30">
<f:facet id="header" name="header">
#{msg.lista_empresas}
</f:facet>
<p:ajax event="rowEdit" listener="#{pesquisaEmpresasBean.onRowEdit}" update="empresasTable"
/>
<p:ajax event="rowEditCancel" listener="#{pesquisaEmpresasBean.onRowCancel}" update="empresasTable"
/>
<p:column headerText="#{msg.nome}"
style="text-align: center; width: 140px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{empresa.nome}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{empresa.nome}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>