Quando vou editar duplica os dados no DataTable [RESOLVIDO]

Bom dia, queria tirar uma duvida. Quando eu clico no editar ele puxa os dados para o formulário de funcionários então eu faço a alteração só que quando eu salvo, ele duplica somente no dataTable no banco está normal então quando eu do restart no tomcat 7.0 o dataTable tira as duplicações, e o método de remover também não esta dando certo. Estou utilizando o eclipse luna, Tomcat v7.0, jsf

controller

[code]package controller;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import to.Funcionario;
import bo.IFuncionarioBO;
import bo.impl.FuncionarioBOImpl;

@SessionScoped
@ManagedBean
public class FuncionariosController {

private IFuncionarioBO funcionarioBO = new FuncionarioBOImpl();
private List<Funcionario> funcionarios;
private Funcionario funcionario;
private Funcionario funcionarioSelecionado;
private String nomeLocalizar;

{
	funcionarios = new LinkedList<Funcionario>();
	funcionarios.addAll(funcionarioBO.listar());
	
}

public IFuncionarioBO getFuncionarioBO() {
	return funcionarioBO;
}

public void setFuncionarioBO(IFuncionarioBO funcionarioBO) {
	this.funcionarioBO = funcionarioBO;
}

public List<Funcionario> getFuncionarios() {
	return funcionarios;
}

public void setFuncionarios(List<Funcionario> funcionarios) {
	this.funcionarios = funcionarios;
}

public Funcionario getFuncionario() {
	if(funcionario == null){
		funcionario = new Funcionario();
	}
	return funcionario;
}

public void setFuncionario(Funcionario funcionario) {
	this.funcionario = funcionario;
}

public Funcionario getFuncionarioSelecionado() {
	return funcionarioSelecionado;
}

public void setFuncionarioSelecionado(Funcionario funcionarioSelecionado) {
	this.funcionarioSelecionado = funcionarioSelecionado;
}

public String getNomeLocalizar() {
	return nomeLocalizar;
}

public void setNomeLocalizar(String nomeLocalizar) {
	this.nomeLocalizar = nomeLocalizar;
}

public void salvar() {
	funcionarioBO.salvar(funcionario);
	funcionarios.add(funcionario);
	FacesMessage msg = new FacesMessage("Funcionário " + funcionario.getNome()
			+ " salvo com sucesso!!!");
	FacesContext.getCurrentInstance().addMessage(null, msg);
	funcionario = null;
	
}

public void novo() {
	System.out.println("....");
	funcionarioBO.salvar(funcionario);
	FacesContext context = FacesContext.getCurrentInstance();           
    context.addMessage(null, new FacesMessage("User successfully added."));
    funcionarioSelecionado = null;
	funcionario = null;
	nomeLocalizar = null;
		
}

public void localizar() {
	System.out.println("localizar");
	List<Funcionario> funcionarios = new ArrayList<Funcionario>();
	funcionarios = funcionarioBO.buscarUsuarioPorNome(nomeLocalizar);
	nomeLocalizar = null;
	funcionario = null;
	System.out.println(funcionarios);
}


public void remover(Funcionario funcionario) { 
	System.out.println("excluido");
	   funcionarioBO.remover(funcionario);
	   FacesMessage msg = new FacesMessage("Funcionario "+funcionario.getNome()+" removido com sucesso!!!");
	   FacesContext.getCurrentInstance().addMessage(null, msg); 
	   funcionario = null;
	} 

	public void editar(Funcionario funcionario){   
		
		this.funcionario = funcionario;
		
	    
	}

}[/code]

xhtml

[code]

<h:head>

System Manager

<h:body>

	<p:layout style="min-width:400px;min-height:200px;">
<p:layoutUnit position="west" resizable="true" size="250" minSize="100" maxSize="150">
    
    <h:form>
<p:growl id="cadastro" life="2000" />
 
<p:commandButton value="Cadastro Funcionario" id="cadastros" update="cadastro" actionListener="#{buttonView.buttonAction}" 
styleClass="ui-priority-primary" />


 </h:form>
 <h:form>
<p:growl id="produto" life="2000" />
 
<p:commandButton value="Cadastro de Produto" id="produtos" update="produto" actionListener="#{buttonView.buttonAction}" 
styleClass="ui-priority-primary" />

</h:form>

<h:form>
<p:growl id="estoque" life="2000" />
 
<p:commandButton value="Estoque de Produto" id="estoques" update="estoque" actionListener="#{buttonView.buttonAction}" 
styleClass="ui-priority-primary" />


 </h:form>
</p:layoutUnit>

<p:layoutUnit position="center">
   
   <h:form id="form">
	<h:inputHidden id="id"
		value="#{funcionariosController.funcionario.id}" />
	<p:panel id="panel" header="Cadastro de Funcionario"
		style="margin-bottom:10px;">
		<p:messages id="messages" />
		<h:panelGrid columns="3">
			
			
			<h:outputLabel for="nome" value="NOME: *" />
			<p:inputText id="nome"
				value="#{funcionariosController.funcionario.nome}" required="false"
				label="nome" size="60">
				<f:validateLength maximum="100" />

			</p:inputText>
			<p:message for="nome" />
			
			<h:outputLabel value="TELEFONE: *" for="telefone" />  
        <p:inputText id="telefone" Label="telefone" styleClass='fone' value="#{funcionariosController.funcionario.telefone}"  
            required="false" maxlength="10" size="60" >
            <f:validateLength maximum="100" />              
        </p:inputText> 
        <p:message for="telefone" />

			
			<h:outputLabel for="endereco" value="ENDEREÇO:*" />
			<p:inputText id="endereco"
				value="#{funcionariosController.funcionario.endereco}"
				required="false" label="endereco" size="60">
				<f:validateLength maximum="45" />
			</p:inputText>
			<p:message for="endereco" />

			<h:outputLabel for="email" value="E-MAIL: " />
			<p:inputText id="email"
				value="#{funcionariosController.funcionario.email}" required="false"
				label="email" size="60">
				<f:validateLength maximum="45" />
			</p:inputText>
			<p:message for="email" />

			<h:outputLabel for="cpf" value="CPF: *" />
			<p:inputText id="cpf" styleClass='cpf'
				value="#{funcionariosController.funcionario.cpf}" required="false"
				label="cpf" size="60">
				<f:validateLength maximum="45" />
			</p:inputText>
			<p:message for="cpf" />

			<h:outputLabel for="login" value="LOGIN: *" />
			<p:inputText id="login"
				value="#{funcionariosController.funcionario.login}" required="false"
				label="login">
				<f:validateLength maximum="45" />
			</p:inputText>
			<p:message for="login" />

			<h:outputLabel for="senha" value="Senha: *" />
			<p:password id="senha"
				value="#{funcionariosController.funcionario.senha}" required="false"
				label="senha" redisplay="true"> 
				<f:validateLength maximum="45" />
				
			</p:password>
			<p:message for="senha" />


		</h:panelGrid>
	</p:panel>
	<p:commandButton value="Salvar" update="@all"
		action="#{funcionariosController.salvar}"
		icon="ui-icon-disk" />
	<p:commandButton value="Excluir" update="@all"
		action="#{funcionariosController.remover}"
		 icon="ui-icon-close" />
	<p:commandButton value="Localizar"
		action="#{funcionariosController.localizar}"
		icon="ui-icon-search"/>
	<div align="center">	
	<p:dataTable value="#{funcionariosController.funcionarios}" var="funcionario"
				border="10" cellpadding="20" cellspacing="0" paginator="true"
				paginatorPosition="bottom" rows="10" id="funcionariosTable"
				style="margin-top: 20px">
				
			
	<p:column headerText="NOME" style="width: 120px">
			<h:outputText value="#{funcionario.nome}"  />
		</p:column>
		<p:column headerText="TELEFONE" styleClass='fone' style="width: 130px" >
			<h:outputText value="#{funcionario.telefone}" />
		</p:column>

		<p:column headerText="ENDEREÇO" style="width: 180px">
			<h:outputText value="#{funcionario.endereco}" />
		</p:column>

		<p:column headerText="E-MAIL" style="width: 250px" >
			
			<h:outputText value="#{funcionario.email}" />
		</p:column>

		<p:column headerText="CPF" style="width: 120px"  >
			<h:outputText value="#{funcionario.cpf}" styleClass='cpf'/>
		</p:column>

		<p:column headerText="LOGIN" style="width: 90px" >
			<h:outputText value="#{funcionario.login}"  />
		</p:column>
		
		<p:column headerText="" style="width: 90px" >
		<p:growl id="atualiza" life="2000" />
			<p:commandButton action="#{funcionariosController.editar(funcionario)}" update="@form"
			id="iconOnly" icon="ui-icon-wrench" title="Editar" />
			
			<p:commandButton actionListener="#{funcionario.remover}" id="icon" update="atualiza" 
			icon="ui-icon-trash" title="Excluir" />
		</p:column>


	</p:dataTable>
	</div>
</h:form>
</p:layoutUnit>

</p:layout>

</h:body>

[/code]

Desde já obrigado, atenciosamente.

Quando você salva um usuário, você está adicionando-o na sua lista:

Rafael obrigado,

tive que mexer no metodo salvar ficou assim

[code]public void salvar(){

funcionarioBO.salvar(funcionario);
funcionarios.clear();
funcionarios.addAll(funcionarioBO.listar());

FacesMessage msg = new FacesMessage(“Funcionario " + funcionario.getNome()
+ " salvo com sucesso!!”);

FacesContext.getCurrentInstance().addMessage(null, msg);
funcionario = null;

}

[/code]

deu certo sem duplicação e quando faço o editar ele já retorna no dataTable

Muito Obrigado !!