Exclusão com <p:dialog> não funciona?

Quando eu faço a exclusão diretamente com <p:commandLink> essa funciona. Quando eu uso o commandLink para chamar um dialog para confirmar a exclusão não funciona. Segue o código!!
Assim funciona!

<p:commandLink
    title="Excluir" class="fa fa-trash fa-lg"
    style="color: #333333" process="@this" 
    update=":tabDocMacro:tblDocMacro"
    actionListener="#{documentoMacroMB.setDocumentoMacro(documentoMacro)}"
    action="#{documentoMacroMB.excluir()}"> 
</p:commandLink>

Assim não funciona! quando eu chamo o dialog.

<p:dialog modal="true" height="500" width="900" widgetVar="exclusaoDocumentoMacro">
	<h:form>
		<p:commandButton 
			value="Sim" 
			actionListener="#{documentoMacroMB.setDocumentoMacro(documentoMacro)}"
			action="#{documentoMacroMB.excluir()}" update=":tabDocMacro:tblDocMacro"
			onclick="exclusaoDocumentoMacro.hide()"/>
		<p:commandButton value="Não" onclick="exclusaoDocumentoMacro.hide()"/>
	</h:form>
</p:dialog>

Erro!!!

HTTP Status 500 - java.lang.NullPointerException
type Exception report
message java.lang.NullPointerException
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
javax.faces.el.EvaluationException: java.lang.NullPointerException javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:46) javax.faces.component.UICommand.broadcast(UICommand.java:315) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException br.edu.ifba.dovicmaker.dao.DocumentoMacroDAO.excluir(DocumentoMacroDAO.java:86) br.edu.ifba.dovicmaker.bean.DocumentoMacroMB.excluir(DocumentoMacroMB.java:96) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.apache.el.parser.AstValue.invoke(AstValue.java:279) org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273) com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:46) javax.faces.component.UICommand.broadcast(UICommand.java:315) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.79 logs.

Apache Tomcat/7.0.79

Bom dia

O erro diz que tem algo nulo na linha 86 da classe DocumentoMacroDAO, você já olhou o que é?

O que seria o documentoMacro que você passa como parâmetro do método no actionListener, o objeto que representa a linha da datatable?

Você não postou o seu código todo, na verdade nem o mínimo necessario para uma boa análise, ai fica complicado e chato te ajudar, na próxima tenta detalhar mais, ok? Nos ajude a te ajudar

Mas vamos la!

Eu imagino que você deve ter uma datatable e que esteja passando o objeto que representa a linha (propriedade var) como parâmetro do método no actionListener, como você mesmo disse isso funciona e esta ok.

Na questão do dialog, como ele não esta dentro da tabela, ele acaba não enxergando o documentoMacro, então eu sugiro que você sete o objeto no bean através do botão ou link que abre o dialog ao invés do commandButton que esta no dialog.

Eu não sei se esse é realmente o seu caso, pois como eu disse antes: falta mais códigos para uma análise melhor, então eu estou imaginando o que você fez.

Abraços

Boa noite Mike é isso mesmo. Desculpa por eu ter resumido o código vou postar todo. Muito obrigado pelas dicas. Valeu Mesmo!!

Esse código é responsável por exibir uma tabela com documentos cadastrados. Essa tabela possui as opções de editar e excluir cada registro.
Abaixo da tabela tem um botão que chama um formulário de cadastro de um novo documento. Esse formulário é criado dentro de um um dialog.

Meu problema é que quando crio outro dialog para pedir confirmação de exclusão para o usuário ele não passa nenhum parametro para o bean para o documento ser excluído.
Segue o código:

<?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:decorate xmlns="http://www.w3.org/1999/xhtml"
             xmlns:h="http://xmlns.jcp.org/jsf/html"
             xmlns:p="http://primefaces.org/ui"
             xmlns:f="http://xmlns.jcp.org/jsf/core"
             xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
             template="template.xhtml">
    <ui:define name="content">
        <!--nada do estado do JSF será salvo e as visualizações nunca irão expirar, apenas serão reconstruídas 
        do zero em todas as solicitações. Você pode ativar as visualizações sem estado configurando o
        transientatributo de <f:view>para true-->
        <f:view transient="true">
            <h2>Documento Macro</h2>        
            <h:form id="tabDocMacro" style="width: 900px" rendered="true">
                <p:dataTable id="tblDocMacro" var="documentoMacro" value="#{documentoMacroMB.lista}" lazy="true"
                             style="margin-top:0" scrollable="true" scrollHeight="300" rendered="true">
                    <p:column style="width: 70px">
                        <f:facet name="header">
                            <h:outputText value="ID"/>
                        </f:facet>
                        <h:outputText value="#{documentoMacro.iddocumentomacro}"/>
                    </p:column>
                    <p:column style="width: 100px">
                        <f:facet name="header">
                            <h:outputText value="Código"/>
                        </f:facet>
                        <h:outputText value="#{documentoMacro.iddocumentofisico}"/>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Título"/>
                        </f:facet>
                        <h:outputText value="#{documentoMacro.titulo}"/>
                    </p:column>
                    <p:column style="width:70px; text-align: center">
                        <f:facet name="header">
                            <h:outputText value="Documento Micro"/>
                        </f:facet>
                        <p:commandLink title="Adicionar Documento Micro" class="fa fa-copy fa-lg" 
                                       action="#{documentoMacroMB.listarDocumentoMicro()}" style="color: #333333">   
                            <f:setPropertyActionListener target="#{documentoMacroMB.documentoMacro}" value="#{documentoMacro}"/>
                        </p:commandLink>
                    </p:column> 
                    <p:column style="width:70px; text-align: center">
                        <f:facet name="header">
                            <h:outputText value="Imagens"/>
                        </f:facet>
                        <p:commandLink title="Gerenciar Imagens" class="fa fa-picture-o fa-lg"
                                       action="#{imagemMB.listarImagem()}" style="color: #333333"> 
                            <f:setPropertyActionListener target="#{imagemMB.documentoMacro}" value="#{documentoMacro}"/>                            
                        </p:commandLink>
                    </p:column> 

                    <p:column style="width:70px; text-align: center">
                        <f:facet name="header">
                            <h:outputText value="Ações"/>
                        </f:facet>
                        <p:commandLink title="Editar" class="fa fa-pencil fa-lg"
                                       style="color: #333333" oncomplete="PF('cadastroDocumentoMacro').show()" 
                                       process="@this" update=":cadastroObra" actionListener="#{documentoMacroMB.setDocumentoMacro(documentoMacro)}">
                            <f:param name="idMacro" value="#{documentoMacroMB.id}"/>
                            <f:setPropertyActionListener value="#{documentoMacroMB.documentoMacro}" target="#{documentoMicroMB.documentoMacro}"/>
                        </p:commandLink>

                        <p:spacer width="20"/>

                        <p:commandLink title="Excluir" class="fa fa-trash fa-lg"
                                       style="color: #333333" process="@this" update=":tabDocMacro:tblDocMacro"
                                       oncomplete="PF('exclusaoDocumentoMacro').show()"> 
                        </p:commandLink>
                    </p:column>
                </p:dataTable>
                <p:commandButton value="Novo" oncomplete="PF('cadastroDocumentoMacro').show()" process="@this" update=":cadastroObra">
                    <f:param name="idMacro" value="#{documentoMacroMB.id}"/>
                    <f:setPropertyActionListener value="#{documentoMacroMB.documentoMacro}" target="#{documentoMicroMB.documentoMacro}"/>
                </p:commandButton>
            </h:form>
            

            <p:dialog modal="true" height="500" width="900" widgetVar="cadastroDocumentoMacro">
                <h:form id="cadastroObra">
                    <p:panelGrid columns="2" styleClass="semBorda">
                        <p:outputLabel value="Id" for="id"/>                        
                        <p:inputText id="id" value="#{documentoMacroMB.documentoMacro.iddocumentomacro}" maxlength="10" required="true" requiredMessage="Campo id é obrigatorio."/>
                    </p:panelGrid>

                    <p:panelGrid columns="2" styleClass="semBorda">
                        <p:outputLabel value="Código" for="codigo"/>
                        <p:inputText id="codigo" value="#{documentoMacroMB.documentoMacro.iddocumentofisico}" maxlength="10" required="true" requiredMessage="Campo código é obrigatorio."/>
                    </p:panelGrid>

                    <p:panelGrid columns="2" styleClass="semBorda">
                        <p:outputLabel value="Título" for="titulo"/>
                        <p:inputText id="titulo" value="#{documentoMacroMB.documentoMacro.titulo}"  style="width: 600px" maxlength="50" required="true" requiredMessage="Campo título é obrigatorio."/>
                    </p:panelGrid>

                    <p:panelGrid columns="4" styleClass="semBorda">
                        <p:outputLabel value="Ano Inicial" for="anoInicial"/>
                        <p:inputText id="anoInicial" value="#{documentoMacroMB.documentoMacro.anoiniciodocumento}" maxlength="4" required="true" requiredMessage="Campo ano inicial é obrigatório."/>

                        <p:outputLabel value="Ano Final" for="anoFinal"/>
                        <p:inputText id="anoFinal" value="#{documentoMacroMB.documentoMacro.anofimdocumento}" maxlength="4" required="true" requiredMessage="Campo ano final é obrigatorio."/>                
                    </p:panelGrid>

                    <p:panelGrid columns="6" styleClass="semBorda">
                        <p:outputLabel value="Altura" for="altura"/>
                        <p:inputText id="altura" value="#{documentoMacroMB.documentoMacro.alturadocumento}" maxlength="6" required="true" requiredMessage="Campo altura é obrigatório."/>

                        <p:outputLabel value="Largura" for="largura"/>
                        <p:inputText id="largura" value="#{documentoMacroMB.documentoMacro.larguradocumento}" maxlength="6" required="true" requiredMessage="Campo largura é obrigatorio."/>

                        <p:outputLabel value="Profundidade" for="profundidade"/>
                        <p:inputText id="profundidade" value="#{documentoMacroMB.documentoMacro.profundidadedocumento}" maxlength="6" required="true" requiredMessage="Campo profundidade é obrigatório."/>
                    </p:panelGrid> 

                    <p:panelGrid columns="4" styleClass="semBorda">
                        <p:outputLabel value="Tipo de Documento" for="tipoDocumento"/>
                        <p:selectOneMenu id="tipoDocumento" value="#{documentoMacroMB.descricaoTipoMacro}" style="width:125px">
                            <f:selectItem itemLabel="Selecione o tipo" itemValue="" />
                            <f:selectItems value="#{tipoDocumentoMacroMB.options}" />
                        </p:selectOneMenu>
                        <p:outputLabel value="Número de Páginas" for="numeroDePaginas"/>
                        <p:inputText id="numeroDePaginas" value="#{documentoMacroMB.documentoMacro.numerodepaginas}" maxlength="6" required="true" requiredMessage="Campo número de páginas é obrigatorio."/>
                    </p:panelGrid>

                    <p:panelGrid columns="2" class="semBorda">
                        <p:outputLabel value="Observações" for="observacoes"/>
                        <p:inputTextarea id="observacoes" value="#{documentoMacroMB.documentoMacro.observacoes}" style="width: 600px; min-height: 100px;"/> 
                    </p:panelGrid>

                    <p:commandButton action="#{documentoMacroMB.salvar()}" value="Salvar" update=":tabDocMacro:tblDocMacro"
                                     onclick="cadastroDocumentoMacro.hide()"/>
                    <p:messages/>
                </h:form>
            </p:dialog>
            
            <p:dialog modal="true" height="500" width="900" widgetVar="exclusaoDocumentoMacro">
                <h:form>
                    <p:commandButton value="Sim" action="#{documentoMacroMB.excluir()}" update=":tabDocMacro:tblDocMacro"
                                     onclick="exclusaoDocumentoMacro.hide()" actionListener="#{documentoMacroMB.setDocumentoMacro(documentoMacro)}"/>
                    <p:commandButton value="Não" onclick="exclusaoDocumentoMacro.hide()"/>                    
                </h:form>
            </p:dialog>

        </f:view>
    </ui:define>
</ui:decorate>

Esse próximo é o Bean DocumentoMacroMB onde eu criei o método excluir.

package br.edu.ifba.dovicmaker.bean;

import br.edu.ifba.dovicmaker.dao.DocumentoMacroDAO;
import br.edu.ifba.dovicmaker.dao.TipoDocumentoMacroDAO;
import br.edu.ifba.dovicmaker.entidade.Documentomacro;
import br.edu.ifba.dovicmaker.entidade.Documentomicro;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 * @author Sidney Ferraz
 * Esta é uma classe que implementa o ManagenBean referente ao documento DocumentoMacro
 * Ela é reponsável por por fazer a interface com o código xhtml
 */
@ManagedBean
@RequestScoped
public class DocumentoMacroMB {
    private Integer idTipoMacro;
    private String descricaoTipoMacro;
    private Documentomacro documentoMacro;
    private List<Documentomacro> lista;
    private List<Documentomicro> listaMicro;
    private Documentomacro selectedDocument;
    private Documentomacro id;    

    public Documentomacro getId() {
        return id;
    }

    public void setId(Documentomacro id) {
        this.id = id;
    }    
    
    public List<Documentomicro> getListaMicro() {
        return listaMicro;
    }

    public void setListaMicro(List<Documentomicro> listaMicro) {
        this.listaMicro = listaMicro;
    }    
    
    public Documentomacro getDocumentoMacro() {
        return documentoMacro;
    }

    public Documentomacro getSelectedDocument() {
        return selectedDocument;
    }

    public void setSelectedDocument(Documentomacro selectedDocument) {
        this.selectedDocument = selectedDocument;
    }
    
    public void setDocumentoMacro(Documentomacro documentoMacro) {
        //System.out.println(documentoMacro.getTitulo());
        this.documentoMacro = documentoMacro;
    }

    public List<Documentomacro> getLista() {
        return lista;
    }

    public void setLista(List<Documentomacro> lista) {
        this.lista = lista;
    }
    
    public Integer getIdTipoMacro() {
        return idTipoMacro;
    }

    public void setIdTipoMacro(Integer idTipoMacro) {
        this.idTipoMacro = idTipoMacro;
    }

    public String getDescricaoTipoMacro() {
        return descricaoTipoMacro;
    }

    public void setDescricaoTipoMacro(String descricaoTipoMacro) {
        this.descricaoTipoMacro = descricaoTipoMacro;
    }
    
    public void salvar(){
        idPorDescricaoTipoMacro();
        DocumentoMacroDAO dao = new DocumentoMacroDAO();
        dao.salvar(documentoMacro);
        inicializar();         
    }
    
    public void excluir(){
        DocumentoMacroDAO dao = new DocumentoMacroDAO();
        dao.excluir(documentoMacro);
        inicializar();
    }
    
    @PostConstruct
    public void inicializar(){
        documentoMacro = new Documentomacro();
        DocumentoMacroDAO dao = new DocumentoMacroDAO();
        lista = dao.listar();
    }
    
    public void idPorDescricaoTipoMacro(){
        TipoDocumentoMacroDAO dao = new TipoDocumentoMacroDAO();
        idTipoMacro = dao.localizarId(descricaoTipoMacro);
        
        documentoMacro.setIdtipomacro(idTipoMacro);
    }
    
    public String cadastroDocumentoMacro(){
        return "cadastroDocumentoMacro.xhtml";
    }
    
    public void showMessage() {
        //String idTxt = Integer.toString(id);
        //FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "iddocumentomacro", idTxt);         
        //PrimeFaces.current().dialog().showMessageDynamic(message);
    }
    
    public String listarDocumentoMicro(){
        DocumentoMacroDAO dao = new DocumentoMacroDAO();
        listaMicro =  dao.listarDocumentoMicroPorId(documentoMacro);

        FacesContext fCtx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(true);
        session.setAttribute("documentoMacro", documentoMacro);
        
        return  "documentoMicroLista.xhtml";
    }
    
    public void carregarDocumentoMacro(){
        
    }
}

O próximo é o DAO DocumentoMacroDAO. Onde também existe o método excluir que faz a conexão e a exclusão do documento.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.ifba.dovicmaker.dao;

import br.edu.ifba.dovicmaker.entidade.Documentomacro;
import br.edu.ifba.dovicmaker.entidade.Documentomicro;
import br.edu.ifba.dovicmaker.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author ferra
 */
public class DocumentoMacroDAO {

    /*public void salvar(Documentomacro documentomacro) {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        sessao.persist(documentomacro);
        sessao.getTransaction().commit();
        sessao.close();
    }*/
    public void salvar(Documentomacro documentomacro) {
        //Integer idDocumentoMacro = null;
        Documentomacro documentoMacro = null;
        try {
            Session sessao = HibernateUtil.getSessionFactory().openSession();
            Criteria crit = sessao.createCriteria(Documentomacro.class);
            crit.add(Restrictions.eq("iddocumentomacro", documentomacro.getIddocumentomacro()));
            documentoMacro = (Documentomacro) crit.uniqueResult();
            System.out.println("passou por aqui");
            if (documentoMacro == null) {
                sessao.beginTransaction();
                sessao.persist(documentomacro);
                sessao.getTransaction().commit();
                sessao.close();
            } else {
                sessao.beginTransaction();
                sessao.merge(documentomacro);
                sessao.getTransaction().commit();
                sessao.close();
            }
        } catch (HibernateException e) {

        }
    }

    public List<Documentomacro> listar() {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        List<Documentomacro> lista = sessao.getNamedQuery("Documentomacro.findAll").list();
        sessao.close();
        return lista;
    }

    public List<Documentomicro> listarDocumentoMicroPorId(Documentomacro documentoMacro) {
        List<Documentomicro> lista = null;
        try {
            Session sessao = HibernateUtil.getSessionFactory().openSession();
            Criteria crit = sessao.createCriteria(Documentomicro.class);
            //crit.createAlias("iddocumentomacro", "idMacro");
            //crit.add(Restrictions.eq("idMacro.iddocumentomacro", id));
            crit.add(Restrictions.eq("iddocumentomacro", documentoMacro));
            lista = crit.list();
            sessao.close();
        } catch (HibernateException e) {

        }
        return lista;
    }

    /*public List<Documentomicro> listarDocumentoMicroPorIdMacro(Integer id){
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        List<Documentomicro> lista = sessao.getNamedQuery("Documentomicro.findByIddocumentomacro").setParameter("iddocumentomacro", id).list();
        sessao.close();
        
        return lista;
    }*/
    public void excluir(Documentomacro documentomacro) { 
        System.out.println("O ID do documento é "+documentomacro.getIddocumentomacro());
            Session sessao = HibernateUtil.getSessionFactory().openSession(); 
            sessao.beginTransaction();
            sessao.delete(documentomacro);
            sessao.getTransaction().commit();
            sessao.close();
       
    }

}

OBS: lembrando que:

System.out.println("O ID do documento é "+documentomacro.getIddocumentomacro());

É apenas um teste para saber se o objeto documentomacro veio com o parametro.

Esse é o erro que lança:

HTTP Status 500 - java.lang.NullPointerException

type Exception report

message java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

javax.faces.el.EvaluationException: java.lang.NullPointerException
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:46)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NullPointerException
	br.edu.ifba.dovicmaker.dao.DocumentoMacroDAO.excluir(DocumentoMacroDAO.java:86)
	br.edu.ifba.dovicmaker.bean.DocumentoMacroMB.excluir(DocumentoMacroMB.java:96)
	sun.reflect.GeneratedMethodAccessor3367.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.apache.el.parser.AstValue.invoke(AstValue.java:279)
	org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
	com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:46)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.79 logs.

Obrigado aí Mike. Pode ser que agora fica mais fácil fazer uma análise.