Amigos,
Esse código estava funcionando, não entendo porque agora parou de funcionar.
Quando eu clico no botão remover, ele me abre um pop-up perguntando se de fato a exclusão deve ocorrer. Só que ao confirmar, agora ele tenta excluir um objeto null, ou seja dá erro. Pq o Datatable está retornando null e não o objeto de fato?
Aqui está a declaração do datatable
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" rowKey="#{partido.id}"
selection="#{partidosBean.partidoSelecionado}"
selectionMode="single" style="width:60%">
Aqui o commandButton que deve abrir o pop-up
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
</p:commandButton>
Para todos os efeitos, segue o código inteiro:
<?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">
<ui:composition 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:prog="http://prog.tiago.com.br"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<prog:confirmarExclusaoPartidoDialog id="confirmarExclusaoPartido" />
<prog:novoPartidoForm id="novoPartido" />
<h:form id="formPrincipal">
<p:growl id="growMensagens" showDetail="true" sticky="false"
autoUpdate="false" life="3000" />
<h:outputLabel value="Partidos políticos"
style="font-weight:bold;font-size:20px" />
<hr />
<br />
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" rowKey="#{partido.id}"
selection="#{partidosBean.partidoSelecionado}"
selectionMode="single" style="width:60%">
<f:facet name="header">
Aqui você pode editar, excluir e criar novos partidos políticos.
</f:facet>
<p:column headerText="Partido" style="width:40%">
#{partido.partidoEleitoral}
</p:column>
<p:column headerText="Sigla" style="width:10%">
#{partido.sigla}
</p:column>
<p:column headerText="Código" style="width:10%">
#{partido.codigoPartidario}
</p:column>
<p:column headerText="Ativo?" style="width:08%">
#{partido.ativo? 'Sim':'Não'}
</p:column>
<p:column style="width:10%">
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil"
actionListener="#{partidosBean.citar}" title="Editar">
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
</p:commandButton>
</h:panelGroup>
</p:column>
<f:facet name="footer">
<p:commandButton id="btNovo" value="Adicionar novo partido"
icon="ui-icon-plusthick" oncomplete="novoPartidoDlg.show();"
actionListener="#{partidosBean.criarNovoPartido}" />
</f:facet>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
E por fim, o componente criado que de fato exclui o objeto
<?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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:component>
<!-- Confirmação de exclusão de partido político -->
<h:form id="formExcluirPartido">
<p:confirmDialog id="confirmaExclusao" appendToBody="true"
message="Deseja realmente excluir o partido selecionado?"
header="Excluir partido" severity="alert"
widgetVar="confirmaExclusao">
<p:commandButton id="confirm" value="Sim, desejo"
actionListener="#{partidosBean.citar}"
oncomplete="confirmaExclusao.hide();"
update=":formPrincipal:growMensagens,:formPrincipal:partidos" />
<p:commandButton id="decline" value="Não, me enganei"
actionListener="#{partidoBean.citar}"
onclick="confirmaExclusao.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:component>
</html>
Agradeço qualquer ajuda!!!