p:commandButton não executa o método, só atualiza a página! (iniciante)

Boa tarde a todos!

Gostaria de pedir, encarecidamente, a ajuda dos especialistas aqui presentes.
Sou iniciante em programação java e estou tendo uma dificuldade muito grande ao tentar desenvolver o meu próprio CRUD.
Ao Clicar no botão para excluir o registro, ele só atualiza a página e não chama o método correto no meu ManagedBean.

Observação: Se eu coloco o mesmo botão fora do <p:pane> ele chama o método perfeitamente.

Seguem os códigos utilizados:

contato.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Cliente</title>
</h:head>
<h:body>
    <c:metadata>
        <c:event listener="#{contatobean.listar}" type="preRenderView"></c:event>
    </c:metadata>  
    
        <p:panel header="CONTATO">
            <p:messages/>
                
                <!-- Listagem -->
                <h:form id="form2">
                
                    <p:dataTable id="tabela" value="#{contatobean.contatos}" var="contato" emptyMessage="Nenhum registro incluido" paginator="true" rows="10">
                                        
                        <c:facet name="header">Lista de Clientes </c:facet>
                        <p:column headerText="Nome" style="text-align: center;">
                            <h:outputText value="#{contato.nome}"/>
                        </p:column>
                        
                        <p:column headerText="Email" style="text-align: center;">
                            <h:outputText value="#{contato.email}"/>
                        </p:column>
                        
                        <p:column headerText="Alterar - Excluir" style="text-align:center;">
                        
                            <h:link value="Editar" outcome="editar">
                                <c:param name="id" value="#{contato.id}"></c:param>
                            </h:link>
                            
                            <p:commandButton actionListener="#{contatobean.excluirUser(25)}" update="form2:tabela" value="Com update" id="btnExcluir1" immediate="true"></p:commandButton>
                            <p:commandButton action="#{contatobean.excluirUser(25)}" value="Sem update" id="btnExcluir2"></p:commandButton>
                            <p:commandButton action="#{contatobean.excluirUser(contato.id)}" update="form2:tabela" value="Excluir" id="btnExcluir3"></p:commandButton>
                            
                        </p:column>
                        
                    </p:dataTable>
                    
                </h:form>
                <h:form>
                    <p:commandButton actionListener="#{contatobean.excluirUser(25)}" update="form2:tabela" value="Com update2" id="btnExcluir12" immediate="true"></p:commandButton>
                </h:form>
        </p:panel>
        <h:form>
            <p:commandButton actionListener="#{contatobean.excluirUser(25)}" update="form2:tabela" value="Com update3" id="btnExcluir13"></p:commandButton>
        </h:form>
</h:body>

Contatobean:

package br.com.contato.managedbean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.event.ActionEvent;

import br.com.contato.dao.ContatoDao;
import br.com.contato.modelo.Contato;

@ManagedBean
public class Contatobean {

private Contato contato = new Contato();
private ContatoDao contatoDao = new ContatoDao();
private List<Contato> contatos = new ArrayList<Contato>();

private Long contatoId;

    
public void adicionarContato(ActionEvent event)
{
    contatoDao.salvar(contato);
    contato = new Contato();
    contatos = contatoDao.listar();
}

public String atualizarContato()
{
    contatoDao.atualizar(contato);
    return "contato.xml??faces-redirect=true";
}

public String excluirUser(long id)
{
    /*Contato contatoExcluido = contatoDao.getById(id);
    contatoDao.excluir(contatoExcluido);
    
    this.contato = new Contato();
    contatos = contatoDao.listar();*/
    
    System.out.println("entrou no excluir");
    return "/contato.xhtml";
}

public Contato getContato() 
{
    return contato;
}

public void setContato(Contato contato) 
{
    this.contato = contato;
}

public void listar()
{
    contatos = contatoDao.listar();
}

public List<Contato> getContatos() {
    return contatos;
}

public void setContatos(List<Contato> contatos) {
    this.contatos = contatos;
}

public Long getContatoId() {
    return contatoId;
}

public void setContatoId(Long contatoId) {
    this.contatoId = contatoId;
}

public void viewContato()
{
    contato = contatoDao.getById(contatoId);
}

}

Desde já, muito obrigado a todos!

Bom… Eu não sei qual botão que você esta com problema, vc tem 4 que fazem a mesma coisa…

Mas para executar um método que vai ser chamado através de um actionListener, ele OBRIGATORIAMENTE deve ser void

public void excluirUser(long id)
{

}

EDIT:
Estou vendo que você esta usando immediate no botão, se você estiver com algum outro problema na página você avisa, sempre vejo o pessoal usando o immediate como gambiarra, pois ele pula a fase de validação e conversão do ciclo de vida.

Se você quer processar somente o botão, seria interessante você colocar process="@this" nele