@hamilton.mateus escreveu:
Alo galera me ajude aeeeeee.
Estou tentando fazer actualizacao de dados na base de dados de uma tabela feita no primefaces o codigo nao da erro ele apenas nao actualiza da pra me ajudar aeeeee por favor!?
Minha view
<?xml version="1.0" encoding="UTF-8" ?>
<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">
Actualizar Eventos
<ui:define name="conteudo"> <h:form id="formulario"> <p:growl id="msgs" showDetail="true" autoUpdate="true" /> <p:fieldset legend="Actualizar Eventos"> <p:dataTable id="tabelaeventos" value="#{eventoBean.eventosModel}" var="evento" editable="true" editMode="cell" paginator="true" rows="10"> <f:facet name="header"> Tabela de actualizacao de eventos </f:facet> <p:ajax event="cellEdit" immediate="true" listener="#{eventoBean.onCellEdit}" update=":formulario:tabelaeventos :formulario:msgs" process="@this"/> <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%" immediate="true" validatorMessage="O nome nao pode ser superior a 40 caracteres" required="true"> <f:validateLength maximum="40" /> <f:ajax event="blur" /> </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%" label="Descricao" immediate="true" /> </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:calendar id="dataEventoInicio" value="#{evento.dataEventoInicio.time}" style="width:96%" label="Data Fim" immediate="true" pattern="dd/MM/yyyy" timeZone="Africa/Harare" /> </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:calendar id="dataEventoFim" value="#{evento.dataEventoFim.time}" style="width:96%" label="Data Fim" immediate="true" pattern="dd/MM/yyyy" timeZone="Africa/Harare" /> </f:facet> </p:cellEditor> </p:column> <f:facet name="footer"> <h:outputText value="Existem " /> <h:outputText value="#{fn:length(eventoBean.listaEventos)}" /> <h:outputText value=" eventos cadastrados." /> </f:facet> </p:dataTable> </p:fieldset> </h:form> </ui:define>
Meu metodo onCellEdit
public void onCellEdit(CellEditEvent event) { Object oldValue = event.getOldValue(); Object newValue = event.getNewValue(); System.out.println("Antigo: " + oldValue + " Novo: " + newValue); if (newValue != null && !newValue.equals(oldValue) && newValue.toString().length() < 40) { if (event.getColumn().getHeaderText().equalsIgnoreCase("Nome")) { this.evento.setNomeEvento(newValue.toString()); } else if (event.getColumn().getHeaderText().equalsIgnoreCase("Descricao")) { this.evento.setDescricaoEvento(newValue.toString()); } new DAO<Evento>(Evento.class).atualiza(this.evento); this.evento = new Evento(); FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Actualizado", "Antigo: " + oldValue + ", Novo: " + newValue); FacesContext.getCurrentInstance().addMessage(null, msg); listaEventosFiltradosPeloNome = new DAO<Evento>(Evento.class).filtrarEventoPeloNome(pegarUsuarioDaSessao()); } } ## Metodo na classe DAO para actualizar na base de dados public void atualiza(T t) { EntityManager em = new JPAUtil().getEntityManager(); em.getTransaction().begin(); em.merge(t); em.getTransaction().commit(); em.close(); }
Meu Metodo da classe dao
public void atualiza(T t) { EntityManager em = new JPAUtil().getEntityManager(); em.getTransaction().begin(); em.merge(t); em.getTransaction().commit(); em.close(); }
Mensagens: 1
Participantes: 1