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" ?><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" 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>
</ui:composition>
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();
}