Problema com JSF. Problema para salvar um objeto na tela de edição

Olá, estou tendo um problema para criar uma tela de edição para um objeto.

Eu consigo abrir a tela e preencher os campos com os valores do objeto. Porém quando clico no botão salvar a única coisa que acontece é que todos os campos são limpos… Se alguém puder me ajudar…

segue abaixo os códigos dessa tela:

template da tela:

<?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:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"	
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">

	<h:head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
		
		<p:resources/>
		
		<title>Controle de Estoque</title> 
	</h:head >
	<h:body>
		<h:outputStylesheet library="css" name="styles.css" />
		
		<style type="text/css">
			#navigation {font-size:0.75em; width:150px;}
			#navigation ul {margin:0px; padding:0px;}
			#navigation li {list-style: none;} 
			
			ul.top-level {background:#666;}
			ul.top-level li {
			 border-bottom: #fff solid;
			 border-top: #fff solid;
			 border-width: 1px;
			}
			
			#navigation a {
			 color: #fff;
			 cursor: pointer;
			 display:block;
			 height:25px;
			 line-height: 25px;
			 text-indent: 10px;
			 text-decoration:none;
			 width:100%;
			}
			#navigation a:hover{
			 text-decoration:underline;
			}
			
			#navigation li:hover {
			 background: #76D7F5;
			 position: relative;
			}
		</style>
		
	    <div id="wrapper">
	        <div id="header">
	            <p>Header</p>
	        </div>
	        
	        <hr/>
	        
	        <div id="contentliquid">
		        <div id="content">
		           <h:form id="form">
						<a4j:outputPanel id="pgrowl" ajaxRendered="true">
							<p:growl id="growl"     
								sticky="true"  
								showSummary="true" 
								showDetail="true"/>
						</a4j:outputPanel>
						
						<ui:insert name="conteudo"/>
					</h:form>
		       </div>
	       </div>
	       	        
	        <div id="leftcolumn">
	            <h:form>
					<div id="navigation">
					    <ul class="top-level">
					        <li><p:commandLink action="/ok.xhtml?faces-redirect=true">Home</p:commandLink></li>
					        <li><p:commandLink action="/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true">Departamentos</p:commandLink></li>
					        <li><p:commandLink action="/paginas/fornecedor/lista_fornecedores.xhtml?faces-redirect=true">Fornecedores</p:commandLink></li>
					        <li><p:commandLink action="/paginas/produto/lista_produtos.xhtml?faces-redirect=true">Produtos</p:commandLink></li>
					        <li><p:commandLink action="/paginas.xhtml?faces-redirect=true">Movimentacao</p:commandLink></li>
					        <li><p:commandLink action="/paginas.xhtml?faces-redirect=true">Relatorios</p:commandLink></li>
					    </ul>
					</div>
				</h:form>
	        </div>

	    </div>

        <div id="footer">
            &copy; Carlos.
        </div>
	
	</h:body>
</html>

Tela onde listo os objetos e chamo a tela de edição


<ui:composition template="/WEB-INF/templates/esqueleto.xhtml"
	  xmlns="http://www.w3.org/1999/xhtml"
	  xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:a4j="http://richfaces.org/a4j"
	  xmlns:rich="http://richfaces.org/rich"	
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:p="http://primefaces.org/ui">
	  
	  <ui:define name="conteudo">
	  	
  		<p:panel header="Departamentos" style="width: 800px">
  			<f:facet name="actions">  
	            <h:commandLink styleClass="ui-panel-titlebar-icon ui-corner-all ui-state-default"
	            	action="#{departamentoBean.novoDepartamento}" title="Novo">
	                <h:outputText styleClass="ui-icon ui-icon-plus" />  
	            </h:commandLink>  
            </f:facet>
  		
	  		<p:dataTable id="departamentos" var="departamento" value="#{departamentoBean.listaDepartamentos}" rowKey="#{departamento.idDepartamento}"
                 selection="#{departamentoBean.departamentoSelecionado}" selectionMode="single" emptyMessage="Nenhum Departamento cadastrado.">
  
	  	        <p:column headerText="Nome" >  
		            #{departamento.nome}
		        </p:column>  
				
		        <p:column id="colunaOpcoes" style="width:8%">
		        	<p:menuButton id="menuButton" value="Opcoes">
				        <p:menuitem value="Alterar" action="#{departamentoBean.editarDepartamento(departamentoBean.departamentoSelecionado)}" icon="ui-icon-arrowrefresh-1-w"/>  
				        <p:menuitem value="Excluir" onclick="confirmation.show()" icon="ui-icon-close" update="departamentos"/>  
			    	</p:menuButton>
		        </p:column>
		        
	    	</p:dataTable>
	    	
	    	<p:confirmDialog id="confirmacaoExclusao" message="Deseja excluir o registro selecionado?" header="Confirmacao"
	    		severity="alert" widgetVar="confirmation">
	    		
	    		<p:commandButton id="confirm" value="Sim" update="departamentos,pgrowl" oncomplete="confirmation.hide()"  
                    action="#{departamentoBean.excluirDepartamento}" />  
        		<p:commandButton id="decline" value="Nao" onclick="confirmation.hide()" type="button" />
	    	</p:confirmDialog>
			  		
		</p:panel>
	  </ui:define>
</ui:composition>
	  

Tela de cadastro e edição (uso a mesma tela)

<ui:composition template="/WEB-INF/templates/esqueleto.xhtml"
	  xmlns="http://www.w3.org/1999/xhtml"
	  xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:a4j="http://richfaces.org/a4j"
	  xmlns:rich="http://richfaces.org/rich"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:p="http://primefaces.org/ui">
	  
	  <ui:define name="conteudo">

		<p:panel header="Cadastro de Departamento" id="formCadDepartamento" style="width: 800px">
			<h:panelGroup>
				
				<h:inputHidden value="#{departamentoBean.departamento.idDepartamento}"/>
				
				<h:panelGrid columns="1">
					<h:outputLabel value="Nome"/>
					<p:inputText id="inputNomeCad" required="true" label="Nome" value="#{departamentoBean.departamento.nome}" maxlength="45" size="100"/>
					<p:message for="inputNomeCad"/>
				</h:panelGrid>
				
			</h:panelGroup>
			
			
			<hr/>
			<div class="botao">
				<p:commandButton value="Salvar" action="#{departamentoBean.salvarDepartamento}" update="formCadDepartamento"/>
				<p:commandButton value="Voltar" action="#{departamentoBean.cancelar}" immediate="true"/>
			</div>
		</p:panel>
	  </ui:define>
</ui:composition>
	  

Meu bean que cuida das duas telas

package br.com.unopar.carlos.beans;

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

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import br.com.unopar.carlos.departamento.Departamento;
import br.com.unopar.carlos.departamento.DepartamentoDAO;

@ManagedBean
public class DepartamentoBean {

	Departamento departamento = new Departamento();
	
	Departamento departamentoSelecionado = new Departamento();
	
	List<Departamento> listaDepartamentos = new ArrayList<Departamento>();
	
	public DepartamentoBean(){
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		listaDepartamentos = departamentoDAO.listar();
	}
	
	public String salvarDepartamento(){
		System.out.println("id_departamento:" + this.departamento.getIdDepartamento() + ":");
		if (this.departamento.getIdDepartamento() == 0)
			return incluirDepartamento();
		else
			return alterarDepartamento();
	}
	
	public String incluirDepartamento(){
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		departamentoDAO.salvar(this.departamento);
		
		return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
	}
	
	public String alterarDepartamento(){
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		departamentoDAO.atualizar(this.departamento);
		
		return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
	}
	
	public String novoDepartamento(){
		System.out.println("Entrando");
		return "/paginas/departamento/cadastro_departamento.xhtml?faces-redirect=true";
	}
	
	public String editarDepartamento(Departamento departamento){
		this.departamento = departamento;
		System.out.println("ta passando nes abotaw");
		return "/paginas/departamento/cadastro_departamento.xhtml";
	}
	
	public void excluirDepartamento(){
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		
		if(!departamentoDAO.excluir(departamentoSelecionado)){
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possível excluir o departamento.", ""));
		}
		
		this.listaDepartamentos = departamentoDAO.listar();
	}
	
	public String cancelar(){
		System.out.println("ta cancelando?");
		
		return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
	}
	
	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public Departamento getDepartamentoSelecionado() {
		return departamentoSelecionado;
	}

	public void setDepartamentoSelecionado(Departamento departamentoSelecionado) {
		this.departamentoSelecionado = departamentoSelecionado;
	}

	public List<Departamento> getListaDepartamentos() {
		return listaDepartamentos;
	}

	public void setListaDepartamentos(List<Departamento> listaDepartamentos) {
		this.listaDepartamentos = listaDepartamentos;
	}

}

olha a treta…

Se eu clico no botão voltar, não acontece nada. Dai logo depois disso se eu clicar no salvar, a tela funciona normalmente!!! alguem sabe porque?

O objeto departamento dentro do seu managedBean quando você entra nesta tela não esta nulo certo?
Coloque um formulario dentro dessa sua página e no botão salvar coloque a propriedade process com o valor @form.

[]`s

Valeu pela dica, mas não funcionou.

Aliás, os valores pararam de sumir da tela, mas ainda assim é preciso 2 cliques no botão Salvar para a operação funcionar.

Quanto a adição do formulário, eu testei adicionando e sem adicionar, e o resultado foi o mesmo…

Alguma idéia de o porque da tela estar exigindo 2 cliques? Quando eu utilizo a tela apenas para inserção, funciona normalmente, com apenas 1 clique. mas para edição estão sendo necessário 2.