Boa noite gente,
Estou desenvolvendo um trabalho com JSF 2 e primefaces 3.2 e recentemente adicionei o layout de template do próprio primefaces às minhas telas. Até aí tudo bem, mas o componente <p:confirmDialog> que eu tinha para confirmar a exclusão de um registro não aparece direito. Fica assim, meio que apagado e a’i acaba não habilitando os botoes para disparar os métodos devidos.
Eu testei remover a popup e chamar um botão comum, mas aí piora porque nem meu método de excluir ele encontra no meu controller.
Minha tela:
[code]<?xml version="1.0" encoding="UTF-8" ?>
<ui:decorate template="/template/home_template.xhtml">
<ui:define name="centro">
<h:body>
<h:form id="formConsultarCategoria">
<p:messages id="messages" showDetail="true" autoUpdate="true"
closable="true" />
<h:panelGrid columns="1">
<h:outputLabel value="Consultar Categoria" />
<p:separator id="separator" style="width:450px" />
<h:outputLabel value="Nome" for="nome" />
<p:inputText
value="#{categoriaBean.categoriaControle.categoria.nome}"
size="60" id="nome" readonly="true" />
</h:panelGrid>
<br />
<br />
<br />
<h:panelGrid columns="1">
<p:separator id="separatorButton" style="width:450px" />
</h:panelGrid>
<h:panelGrid columns="4">
<p:commandButton value="Alterar"
actionListener="#{redirecionarUtil.redirecionarCategoriaAlterar}">
</p:commandButton>
<p:commandButton value="Excluir"
action="#{categoriaBean.categoriaControle.excluir}" ajax="false"/> // esse aqui ele nem encontra no controller
<p:commandButton value="Excluir" onclick="confirmation.show()"
type="button" /> // e a popup desse fica 'apagada' ao ser chamado
<p:confirmDialog id="confirmDialog"
message="Deseja realmente excluir #{categoriaBean.categoriaControle.categoria.nome}?"
header="Confirmação de Exclusão" severity="alert"
widgetVar="confirmation">
<p:commandButton id="confirm" value="Sim" update="messages"
oncomplete="confirmation.hide()"
actionListener="#{categoriaBean.categoriaControle.excluir}" />
<p:commandButton id="decline" value="Não"
onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
<p:commandButton value="Cancelar"
actionListener="#{redirecionarUtil.redirecionarCategoriaPesquisar}" />
</h:panelGrid>
</h:form>
</h:body>
</ui:define>
</ui:decorate>
[/code]Meu controler:
@ManagedBean
public class CategoriaControle implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private EntityManager entityManager = ConfiguraJpa.getEntityManager();
private CategoriaDAO dao = new CategoriaDAO(entityManager);
private Categoria categoria = new Categoria();
public void excluir() {
entityManager.getTransaction().begin();
dao.excluir(categoria);
entityManager.getTransaction().commit();
categoria = new Categoria();
}
}
Meu Dao:
public class CategoriaDAO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private GenericDAO<Categoria> dao;
private final EntityManager entityManager;
public CategoriaDAO(EntityManager entityManager) {
this.dao = new GenericDAO<Categoria>(entityManager, Categoria.class);
this.entityManager = entityManager;
}
public List<Categoria> pesquisar(Categoria categoria){
String jpsql="select c from Categoria c where c.nome like :pnome order by c.id desc";
TypedQuery<Categoria> consulta = this.entityManager.createQuery(jpsql, Categoria.class);
if(categoria.getNome()==null){
categoria.setNome("");
}
consulta.setParameter("pnome", "%"+categoria.getNome()+"%");
return consulta.getResultList();
}
public void inserir(Categoria t) {
dao.inserir(t);
}
public void alterar(Categoria t) {
dao.alterar(t);
}
public void excluir(Categoria t) {
try{
dao.excluir(t);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Categoria: ", "Registro excluido com sucesso!"));
}catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Não é possivel excluir Categoria. ", "Possui relações externas."));
}
}
public Categoria consultar(int idClasse) {
return dao.consultar(idClasse);
}
public List<Categoria> listarTodos() {
return dao.listarTodos();
}
}
Meu managedBean somente chama o controle direto.
Alguém já passou por isso? Não encontrei nada na internet que seja parecido.
Agradeço ajuda.
