Quero fazer update de uma célula no registo de uma tabela, mas meu método onCellEdit
tanto o atributo novo como antigo tem mesmo valor.
Código:
Classe EventoBean
package mz.co.evento.bean;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.CellEditEvent;
import org.primefaces.event.RowEditEvent;
import mz.co.evento.dao.DAO;
import mz.co.evento.modelo.Categoria;
import mz.co.evento.modelo.Estabelecimento;
import mz.co.evento.modelo.Evento;
@ManagedBean
@ViewScoped
public class EventoBean {
private Evento evento = new Evento();
private Integer estabelecimentoId;
private Integer categoriaId;
private Evento eventoSelecionado;
public void gravarCategorias() {
Categoria categoria = new DAO<Categoria>(Categoria.class).buscaPorId(this.categoriaId);
System.out.println("Nome da categoria: " + categoria.getNome());
this.evento.setCategoria(categoria);
}
public void gravarEstabelecimento() {
Estabelecimento estabelecimento = new DAO<Estabelecimento>(Estabelecimento.class)
.buscaPorId(this.estabelecimentoId);
System.out.println(estabelecimento.getNomeEstabelecimento() + " Vamos ver se o estabelecimento esta correcta");
this.evento.setEstabelecimento(estabelecimento);
}
public Evento getEventoSelecionado() {
return eventoSelecionado;
}
public void setEventoSelecionado(Evento eventoSelecionado) {
this.eventoSelecionado = eventoSelecionado;
}
public List<Estabelecimento> getListaEstabelecimentos() {
return new DAO<Estabelecimento>(Estabelecimento.class).listaTodos();
}
public List<Categoria> getListaCategorias() {
return new DAO<Categoria>(Categoria.class).listaTodos();
}
public List<Evento> getListaEventos() {
return new DAO<Evento>(Evento.class).listaTodos();
}
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public Integer getEventoId() {
return estabelecimentoId;
}
public void setEventoId(Integer eventoId) {
this.estabelecimentoId = eventoId;
}
public Integer getEstabelecimentoId() {
return estabelecimentoId;
}
public void setEstabelecimentoId(Integer estabelecimentoId) {
this.estabelecimentoId = estabelecimentoId;
}
public Integer getCategoriaId() {
return categoriaId;
}
public void setCategoriaId(Integer categoriaId) {
this.categoriaId = categoriaId;
}
public void gravar() {
System.out.println("Gravando evento " + this.evento.getNomeEvento());
gravarCategorias();
gravarEstabelecimento();
new DAO<Evento>(Evento.class).adiciona(this.evento);
this.evento = new Evento();
}
public void remover() {
System.out.println("Tentando remover");
new DAO<Evento>(Evento.class).remove(this.eventoSelecionado);
this.evento = new Evento();
}
public void pesquisar() {
}
public void onRowEdit(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Evento Edited", ((Evento) event.getObject()).getId() + "");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onRowCancel(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Edit Cancelled", ((Evento) event.getObject()).getId() + "");
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);
}
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed",
"Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
Classe Evento
package mz.co.evento.modelo;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class Evento {
@Id
@GeneratedValue
private Integer id;
private String nomeEvento;
private String descricaoEvento;
private Integer limiteDePessoas;
private boolean estadoDoEvento;
@Temporal(TemporalType.DATE)
private Calendar dataEventoInicio = Calendar.getInstance();
@Temporal(TemporalType.DATE)
private Calendar dataEventoFim = Calendar.getInstance();
@ManyToOne
private Categoria categoria;
@ManyToOne
private Estabelecimento estabelecimento;
// Getters e Setters
public String getNomeEvento() {
return nomeEvento;
}
public Estabelecimento getEstabelecimento() {
return estabelecimento;
}
public void setEstabelecimento(Estabelecimento estabelecimento) {
this.estabelecimento = estabelecimento;
}
public void setNomeEvento(String nomeEvento) {
this.nomeEvento = nomeEvento;
}
public String getDescricaoEvento() {
return descricaoEvento;
}
public void setDescricaoEvento(String descricaoEvento) {
this.descricaoEvento = descricaoEvento;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public Integer getLimiteDePessoas() {
return limiteDePessoas;
}
public void setLimiteDePessoas(Integer limiteDePessoas) {
this.limiteDePessoas = limiteDePessoas;
}
public Calendar getDataEventoInicio() {
return dataEventoInicio;
}
public void setDataEventoInicio(Calendar dataEventoInicio) {
this.dataEventoInicio = dataEventoInicio;
}
public Integer getId() {
return id;
}
public Calendar getDataEventoFim() {
return dataEventoFim;
}
public void setDataEventoFim(Calendar dataEventoFim) {
this.dataEventoFim = dataEventoFim;
}
public boolean isEstadoDoEvento() {
return estadoDoEvento;
}
public void setEstadoDoEvento(boolean estadoDoEvento) {
this.estadoDoEvento = estadoDoEvento;
}
}
View actualizarevento
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
Actualizar Eventos
</ui:define>
<ui:define name="conteudo">
<h:form id="formulario">
<p:growl id="msgs" showDetail="true"/>
<p:dataTable id="tabelaeventoss" var="evento" value="#{eventoBean.listaEventos}" editable="true" editMode="cell" widgetVar="cellEventos">
<f:facet name="header">
Cell Editing with Click and RightClick
</f:facet>
<p:ajax event="cellEdit" listener="#{eventoBean.onCellEdit}" update=":formulario:msgs" />
<p:column headerText="Nome">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{evento.nomeEvento}" /></f:facet>
<f:facet name="input">
<p:inputText id="modelInput" value="#{evento.nomeEvento}" style="width:96%">
<p:ajax event="change" update="modelInput"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Descricao">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{evento.descricaoEvento}" /></f:facet>
<f:facet name="input"><p:inputText value="#{evento.descricaoEvento}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Data Inicio">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{evento.dataEventoInicio.time}">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{evento.dataEventoInicio.time}" style="width:96%" label="Year">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Data Fim">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{evento.dataEventoFim.time}">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{evento.dataEventoFim.time}" style="width:96%" label="Year">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
<p:contextMenu for="tabelaeventoss" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search" update ="tabelaeventoss" onclick="PF('cellEventos').showCellEditor();return false;"/>
<p:menuitem value="Hide Menu" icon="ui-icon-close" onclick="PF('cMenu').hide()"/>
</p:contextMenu>
</h:form>
</ui:define>
</ui:composition>
</html>
Obrigado