Problema ao clicar no botão Alterar

Bom dia pessoal,
eu tenho uma página xhtml que é utilizada para cadastro / alteração.
Quando entro na parte de alteração as informações são carregadas normalmente juntamento com o botão Alterar.
Mais quando eu clico no botão Alterar, ele não vai para o Bean (Que deveria executar o metodo de alterar) e recarrega a página, aparecendo então o botão Salvar.

Meu Bean

package br.sga179.sistema.mb;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.sga179.sistema.dao.DAO;
import br.sga179.sistema.dao.PaisDAO;
import br.sga179.sistema.modelo.Pais;

@ManagedBean
@RequestScoped
public class PaisBean implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private Pais pais = new Pais();
	private List<Pais> paises;
	private Long idPais;
	

	public void setPais(Pais pais) {
		this.pais = pais;
	}
	
	public Pais getPais() {
		return pais;
	}
	

	public Long getIdPais() {
		return idPais;
	}

	public void setIdPais(Long idPais) {
		this.idPais = idPais;
	}

	public String grava() throws IOException {
		DAO<Pais> dao = new DAO<Pais>(Pais.class);
		if (pais.getId() == null) {
			pais.setSituacao("A");
			dao.adiciona(pais);
		} else {
			dao.atualiza(pais);
		}
		paises = dao.listaTodos();
		this.pais = new Pais();
		//FacesContext.getCurrentInstance().getExternalContext().redirect("listPais.xhtml");  
		return "index";
	}

	public List<Pais> getPaises() {
		if (paises == null) {
			System.out.println("Carregando paiss...");
			paises = new DAO<Pais>(Pais.class).listaTodos();
		}
		return paises;
	}

	public String remove(Pais pais) {
		DAO<Pais> dao = new DAO<Pais>(Pais.class);
		dao.remove(pais);
		this.paises = dao.listaTodos();
		return "listPais?faces-redirect=false";
	}
	
	public void pesquisar() {
		PaisDAO dao = new PaisDAO();
		if (pais.getDescricao()!= null) {
			this.paises = dao.buscaPais(pais.getDescricao());
		}
	}
	
	
	public String editar(Pais pais){
		this.pais = pais;
		return "pais.xhtml";
	}
	
	
	public String novo(){
		this.pais = new Pais();
		return "pais?faces-redirect=true";
	}
	
	public String telaPrincipal(){
		return "listPais?faces-redirect=true";
	}
	
 }

Meu listPais.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:composition template="/templates/template.xhtml">
	<ui:define name="corpo">

		<h:form>
			<fieldset>
				<h2>
					<h:outputText value="Modulo País" />
				</h2>
				<br/>
				<h:outputLabel value="Descrição:" />
				
				<h:inputText id="descricao" value="#{paisBean.pais.descricao}"/>
				
			</fieldset>
			
			<p>
				<h:commandButton value="Pesquisar" action="#{paisBean.pesquisar}" rendered="#{empty paisBean.pais.id}" />
				<h:commandButton value="Novo" action="#{paisBean.novo}" rendered="#{empty paisBean.pais.id}" />
				
			</p>

			<h2>Listagem de Países</h2>

			<!-- aqui em cima vai o formulário para gravar os países -->

			<p:dataTable value="#{paisBean.paises}" var="pais" styleClass="dados"
				rowClasses="impar,par" paginator="true" rows="5" dynamic="true"  rendered="#{empty paisBean.pais.id}">

				<p:column headerText="Descrição">
						#{pais.descricao}
					</p:column>

				<p:column headerText="Excluir">
					<p:commandLink action="#{paisBean.remove(pais)}" value="Remover">
						<f:ajax render="@form" />
					</p:commandLink>
				</p:column>
				<p:column headerText="Editar">
					<p:commandLink value="Alterar" action="#{paisBean.editar(pais)}"  ajax="false"/>
				</p:column>
				
				
			</p:dataTable>
		</h:form>


	</ui:define>
</ui:composition>
</html>

Minha página problemática

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:composition template="/templates/template.xhtml">
	<ui:define name="corpo">
		<h:messages layout="table" errorStyle="color: red"
			infoStyle="color: green" warnStyle="color: orange"
			fatalStyle="color: gray" showSummary="false" showDetail="true" />
		<h:form>
			<fieldset>
				<h2>
					<h:outputText value="Novo País"
						rendered="#{empty paisBean.pais.id}" />
					<h:outputText value="Editar País"
						rendered="#{not empty paisBean.pais.id}" />
				</h2>
				<br />
				<h:outputLabel value="Descrição:" />
				<h:inputText id="descricao" value="#{paisBean.pais.descricao}"
					requiredMessage="O campo descrição deve ser informada"
					required="true" />

			</fieldset>
			<h:commandButton value="Salvar" action="#{paisBean.grava}" rendered="#{empty paisBean.pais.id}"/>
			<h:commandButton value="Alterar" action="#{paisBean.grava}" rendered="#{not empty paisBean.pais.id}"/>
			
			<br />
			<h:commandLink action="index" value="Voltar" />


		</h:form>


	</ui:define>
</ui:composition>
</html>

Beleza Carlos Maia!
Já tentou alterar o Escopo do MB?..altere para ViewScoped.

Ola JUniorDozito, eu tentei sim, mas quando eu coloco ViewScoped, ao clicar em Alterar ele vai direto pra página de Salvar.

Beleza!
O botão só irá aparecer se o id do Pais não estiver vazio!.. vc disse que quando a tela recarrega o botão de salvar aparece!
Acho que quando a pagina recarrega ele está perdendo o id.
Tente colocar o h:inputHidden pegando o id.