Amigos,
Depois de muito sofrer, encontrei muitos problemas parecidos com o meu, tanto no guj quanto no stackoverflow. Mas nenhuma solução…
Estou tentando implementar isto: http://www.primefaces.org/showcase/ui/datatableCellEditing.jsf
Mas claro, gravar no banco de dados. Pra isso, preciso do valor que foi inserido e não sei o que estou fazendo de errado.
abaixo meu .jsf
<p:contextMenu for="chamados" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search" onclick="PF('chamadosTable').showCellEditor(); return false;"/>
<p:menuitem value="Hide Menu" icon="ui-icon-close" onclick="PF('cMenu').hide()"/>
</p:contextMenu>
<p:dataTable id="chamados" var="chamado" value="#{chamadoController.listarChamados}" editable="true" editMode="cell" widgetVar="chamadosTable">
<p:ajax event="cellEdit" listener="#{chamadoController.onCellEdit}" process="@this" update=":form:messages" />
<p:column headerText="Requestor" style="width:25%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{chamado.requestor}" /></f:facet>
<f:facet name="input"><p:inputText id="requestorInput" value="#{chamado.requestor}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
Meu método do MB
public void onCellEdit(CellEditEvent event) {
System.out.println(event.getNewValue());
System.out.println(event.getOldValue());
}
Ambos imprimem o valor ANTIGO.
Um outro fato estranho, a célula modificada só fica modificada quando a seleciono(clicko em cima dela), quando clicko fora, o valor antigo aparece novamente.
Obrigado e abraços!