Problema em Inserir Registro após Atualização em Formúlario JSF

Olá Pessoal, tudo bem? Estou desenvolvendo um projeto em JSF, Primefaces, Hibernate e Spring Security!

O que acontece é o seguinte, se eu abro a página, digito os valores no campo e mando gravar, ele grava normalmente.
Se também eu clico no registro da tabela ao qual eu quero alterar e depois clico em salvar, ele dá o update no registro normalmente.
Porém, se eu dou o update e após eu clico em Novo para limpar o formulário para a inserção de um novo registro, ele não limpa e volta o valor antigo.

Os códigos estão abaixo:

[code]

Touch Sistema Integrado

</h:head>
<h:body>
<p:layout fullPage=“true”>
<p:layoutUnit position=“north” id=“top” resizable=“false” closable=“false” size=“180”
collapsible=“true”>
<ui:insert name=“topo”>
<ui:include src="/topo.xhtml" />
</ui:insert>
</p:layoutUnit>

	<p:layoutUnit position="center">			
			<h1>Gerenciador de Clientes</h1>				
			
	<h:form prependId="false" id="gerenciaCliente">
			<h:panelGrid id="infosCliente" columns="2"
				style="margin-bottom:10px">
		
				<h:outputLabel for="idCliente" value="Código:" />
				<h:inputText id="idCliente" value="#{clienteController.cliente.idCliente}" readonly="true" />
				
				<h:outputLabel for="nome" value="Nome:" />
				<h:inputText id="nome" value="#{clienteController.cliente.nome}" />

				<h:outputLabel for="rua" value="Rua:" />
				<h:inputText id="rua" value="#{clienteController.cliente.rua}" />

				<h:outputLabel for="numero" value="Nº:" />
				<h:inputText id="numero"
					value="#{clienteController.cliente.numero}" />

				<h:outputLabel for="bairro" value="Bairro:" />
				<h:inputText id="bairro"
					value="#{clienteController.cliente.bairro}" />

				<h:outputLabel for="cep" value="Cep:" />
				<h:inputText id="cep" value="#{clienteController.cliente.cep}" />

				<h:outputLabel for="cidade" value="Cidade:" />
				<h:inputText id="cidade"
					value="#{clienteController.cliente.cidade}" />

				<h:outputLabel for="estado" value="Estado:" />
				<h:inputText id="estado"
					value="#{clienteController.cliente.estado}" />

				<h:outputLabel for="telefoneResidencial" value="Tel. Residencial:" />
				<h:inputText id="telefoneResidencial"
					value="#{clienteController.cliente.telefoneResidencial}" />

				<h:outputLabel for="telefoneCelular" value="Tel. Celular:" />
				<h:inputText id="telefoneCelular"
					value="#{clienteController.cliente.telefoneCelular}" />

				<h:outputLabel for="email" value="E-mail" />
				<h:inputText id="email" value="#{clienteController.cliente.email}" />	
							
				<p:commandButton value="Novo" type="reset"
				actionListener="#{clienteController.prepararAdicionarCliente}"/>      
				
				<p:commandButton update=":frm_listaCliente:tabela"						
					actionListener="#{clienteController.salvarCliente}"
					value="Salvar" />
					


			</h:panelGrid>
		</h:form>
	
	<h:form prependId="false" id="frm_listaCliente">
		<p:dataTable id="tabela" var="cliente"
			value="#{clienteController.listaClientes}"
			paginator="true" rows="5"                  
            rowsPerPageTemplate="5,10,15"  >
			<p:column>
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
				<h:outputText value="#{cliente.nome}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="E-mail" />
				</f:facet>
				<h:outputText value="#{cliente.email}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="Tel. Resid." />
				</f:facet>
				<h:outputText value="#{cliente.telefoneResidencial}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="Tel. Celular" />
				</f:facet>
				<h:outputText value="#{cliente.telefoneCelular}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="Cidade" />
				</f:facet>
				<h:outputText value="#{cliente.cidade}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="Alterar" />
				</f:facet>
				<p:commandButton
					actionListener="#{clienteController.prepararAlterarCliente}"
					value="Alterar" update=":gerenciaCliente:infosCliente"
					/>
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputText value="Excluir" />
				</f:facet>
				<h:commandLink action="#{clienteController.excluirCliente}"
					value="Excluir" />
			</p:column>
		</p:dataTable>
	</h:form>			
	</p:layoutUnit>
</p:layout>

</h:body>

[/code]

Meu MB

[code]package controller;

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

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import model.Cliente;
import Dao.ClienteDao;
import Dao.ClienteDaoImp;

@ManagedBean
@ViewScoped
public class ClienteController implements Serializable {
private Cliente cliente;
private DataModel listaClientes;

public ClienteController() {
	// TODO Auto-generated constructor stub		  
	this.cliente = new Cliente();
}
public DataModel<Cliente> getListaClientes() {
	List<Cliente> lista = new ClienteDaoImp().list();
	listaClientes = new ListDataModel<Cliente>(lista);
	return listaClientes;
}

public Cliente getCliente() {
	return cliente;
}

public void setCliente(Cliente cliente) {
	this.cliente = cliente;
}

public void prepararAdicionarCliente(ActionEvent actionEvent){		
	this.cliente = new Cliente();		
}

public void prepararAlterarCliente(ActionEvent actionEvent){
	this.cliente = (Cliente)(listaClientes.getRowData());				
}

public String excluirCliente(){
	Cliente clienteTemp = (Cliente)(listaClientes.getRowData());
	ClienteDao clienteDao = new ClienteDaoImp();
	clienteDao.remove(clienteTemp);
	return "index";
}	
	
public void salvarCliente(ActionEvent actionEvent){		
	ClienteDao clienteDao = new ClienteDaoImp();
	clienteDao.save(cliente);		
}

}
[/code]

Depois de realizar tudo que você fez, você precisa atualizar seu objeto também. Ele fica com os valores da última chamada.

Olá jakefrog obrigado pela resposta!
Sou iniciante em JSF e eu não entendi muito bem o que você falou! Qual objeto você está se referindo?

As inserções funcionam normalmente, somente depois que eu altero algum registro é que eu não consigo mais limpar o form!
Com eu chamando o formulario em um modal, o cadastro funciona normalmente, porém eu queria colocá-lo na mesma página da pesquisa!

Você consegue editar no bando o update também?

Se sim, basta depois que você realizar o update fazer algo do tipopessoaDAO.salvar(pessoa); pessoa = new Pessoa();