Bom dia, conseguem identificar abaixo nos meu projeto por que a página não atualiza automaticamente ao excluir uma linha de código, pois vejo no console que a linha foi apagada, mas a linha só sai da tela ao dar refresh na página , ou seja, manualmente.
<!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:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Cursos cadastrados</title>
</h:head>
<h:body>
<h:form>
<p:panel header="Cursos cadastrados">
<p:button value="Novo Curso" outcome="curso_formulario" />
<h:form>
<p:dataTable emptyMessage="Nenhum registro encontrado."
value="#{cursoBean.cursos}" var="curso">
<p:column headerText="Nome">
<h:outputText value="#{curso.nome}" />
</p:column>
<p:column headerText="Duração">
<h:outputText value="#{curso.duracao}" />
</p:column>
<p:column headerText="Tipo">
<h:outputText value="#{curso.tipo.label}" />
</p:column>
<p:column headerText="Data Criação">
<h:outputText value="#{curso.dataCriacao}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText></p:column>
<p:column>
<p:commandLink value="Editar"
action="#{cursoBean.editar(curso)}" /> -
<p:commandLink value="Excluir"
action="#{cursoBean.excluir(curso)}" update="@form" />
</p:column>
</p:dataTable>
</h:form>
</p:panel>
</h:form>
</h:body>
</html>
package escola.musica.bean;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import escola.musica.dao.CursoDAO;
import escola.musica.modelo.Curso;
import escola.musica.modelo.TipoCurso;
@ManagedBean
@SessionScoped
public class CursoBean {
private Curso curso = new Curso();
private List<TipoCurso> tipos = Arrays.asList(TipoCurso.values());
private List<Curso> cursos = new ArrayList<Curso>();
public CursoBean() {
cursos = new CursoDAO().listarTodos();
curso = new Curso();
}
public String salvar() {
new CursoDAO().salvar(curso);;
cursos = new CursoDAO().listarTodos();
curso = new Curso();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Curso salvo com sucesso."));
return "curso_lista?faces-redirect=true";
}
public String editar(Curso curso) {
this.curso = curso;
return "curso_formulario?faces-redirect=true";
}
public void excluir(Curso curso) {
new CursoDAO().excluir(curso);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Curso excluido com sucesso."));
cursos = new CursoDAO().listarTodos();
}
public List<Curso> getCursos() {
return cursos;
}
public void setCursos(List<Curso> cursos) {
this.cursos = cursos;
}
public List<TipoCurso> getTipos() {
return tipos;
}
public void setTipos(List<TipoCurso> tipos) {
this.tipos = tipos;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public String getDataAtual() {
return new SimpleDateFormat("dd/MM/yyyy").format(new Date());
}
}
package escola.musica.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import escola.musica.modelo.Curso;
public class CursoDAO {
public void salvar(Curso curso) {
EntityManager entityManager = JPAUtil.getEntityManager();
entityManager.getTransaction().begin();
entityManager.merge(curso);
entityManager.getTransaction().commit();
entityManager.close();
}
@SuppressWarnings("unchecked")
public List<Curso> listarTodos() {
EntityManager entityManager = JPAUtil.getEntityManager();
Query query = entityManager.createQuery("from Curso");
return entityManager.createQuery("from Curso").getResultList();
}
public void excluir(Curso curso) {
EntityManager entityManager = JPAUtil.getEntityManager();
entityManager.getTransaction().begin();
curso = entityManager.merge(curso);
entityManager.remove(curso);
entityManager.getTransaction().commit();
entityManager.close();
}
}
