@hamilton.mateus escreveu:
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
Mensagens: 2
Participantes: 1