Editar Dados?

Senhores, estou com um problema aqui, estou fazendo um programa para uma biblioteca do meu bairro !
o programa está cadastrando/pesquisando/excluindo/ MAS, não Edita os Dados… segue meus fontes em baixo.

*******************
JSP
PROCURA O CLIENTE E PREENCHE O FORMULARIO
<a >Detalhes
***************************************************
APLICA NO BANCO A ATUALIZAÇÃO
    <a >
***************************************************
APLICA NO BANCO A ATUALIZAÇÃO
    <a >


    cliente.lista.logic&quot;&gt; &lt;title="Click para pesquisar: ${usuario.login}"/&gt;Pesquisar</a>   
    
    cliente.exclui.logic?cliente.id=${cliente.id}&quot;&gt;  Remover </a>
    cliente.atualiza.logic?cliente.id=${cliente.id}&quot;&gt; &lt;title="Click para excluir: ${usuario.login}"/&gt;Atualiza</a>            
    cliente.salvaupdate.logic?cliente.id=${cliente.id}&quot;&gt; &lt;title="Click para excluir: ${usuario.login}"/&gt;Update</a>            
    

 não da erro somente por que eu direciono tudo se não da certo !

*******************

package br.com.caelum.lojavirtual.modelo;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
//import org.hibernate.validator.NotEmpty;
//import org.hibernate.validator.NotNull;

@Entity
public class Cliente {

	@Id
	@GeneratedValue
	private Long id;
	//@NotNull(message="Nome do Cliente não foi Digitado")
	//@NotEmpty(message="ATENÇÃO.: Nome é Obrigatório")
        private String nome;
        @Length(max =12)
        private String cpf;
        private String rg;
        private String endereco;
        private String mae;
        private String cidade;
        private String estado;
        @Email(message="ATENÇÃO.: E-mail não é válido")
	private String email;
        @Length(max =10)
        private String telefone;
       
GET SETS

*****************************************************
package br.com.caelum.lojavirtual.logic;

import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Remotable;
import org.vraptor.plugin.hibernate.Validate;
import br.com.caelum.lojavirtual.dao.DaoFactory;
import br.com.caelum.lojavirtual.modelo.Cliente;

@Component("cliente")
@InterceptedBy({DaoInterceptor.class, AutorizadorInterceptor.class})
public class ClienteLogic {

    	public Cliente cliente;
        private final DaoFactory daoFactory;
	
        
        private List&lt;Cliente&gt; clientes;                  
       	public ClienteLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}
//adiciona clientes
	@Validate(params={"cliente"})
	public void adiciona(Cliente cliente) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getClienteDao().adiciona(cliente);
		this.daoFactory.commit();
	}
//remove clientes
       @Validate(params={"cliente"})
	public void exclui(Cliente cliente) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getClienteDao().exclui(cliente);
		this.daoFactory.commit();
	}
       
//atualiza clientes
       @Validate(params={"cliente"})
	public void atualiza(Cliente cliente) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getClienteDao().atualiza(cliente);  
		this.daoFactory.commit();
	
        }    
       
//atualiza clientes
       @Validate(params={"cliente"})
	public void salvaupdate(Cliente cliente) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getClienteDao().salvaupdate(cliente);  
		this.daoFactory.commit();
	
        }    
//procura clientes     
      @Validate(params={"cliente"})
        public void procura(Cliente cliente) {
                this.daoFactory.beginTransaction();
		this.cliente = this.daoFactory.getClienteDao().procura(cliente.getId());
                this.daoFactory.commit();
	}
       @Validate(params={"cliente"}) 
        public void procuraIdCliente(Cliente cliente) {
                this.daoFactory.beginTransaction();
		this.cliente = this.daoFactory.getClienteDao().procura(cliente.getId());
                this.daoFactory.commit();
	}
       
   
       
//lista clientes 
	public void lista() {
		clientes = this.daoFactory.getClienteDao().listaTudo();
	}
	public void formulario() {

	}
        // PESQUISA SIMPLE DE clienteS, autocompletar
        @Remotable
	public void searchNome(Cliente cliente) {

		if (cliente.getNome() == null) {
			cliente.setNome("");
		}
		//procura os clientes com um Nome
		this.clientes = this.daoFactory.getClienteDao().searchSimilarNome(cliente.getNome());
	}
        @Remotable
	public void searchCpf(Cliente cliente) {

		if (cliente.getCpf() == null) {
			cliente.setCpf("");
		}
		//procura os clientes com um Nome
		this.clientes = this.daoFactory.getClienteDao().searchSimilarCpf(cliente.getCpf());
	}
        
	public void searchCombo(Cliente cliente) {

		if (cliente == null || cliente.getNome() == null) {
			return;
		}
		//procura os clientes com um Nome
		this.clientes = this.daoFactory.getClienteDao().searchSimilarNome(cliente.getNome());
	}
        public List&lt;Cliente&gt; getclientes() {
		return clientes;
	}
        public Cliente getcliente() {
		return cliente;
	}

}
*************************************************
package br.com.caelum.lojavirtual.dao;

import org.hibernate.Session;
import java.util.List;
import br.com.caelum.lojavirtual.modelo.Cliente;
import org.hibernate.criterion.Restrictions;
public class ClienteDao extends Dao&lt;Cliente&gt; {
    

		public ClienteDao(Session session) {
		super(session, Cliente.class);
	}
 	
        //PROCURA para cliente
        public Cliente procura(Long id) {
        return (Cliente) session.load(Cliente.class, id);
    }     
        
        
        Cliente procuraIdCliente(Long id) {
        return (Cliente) session.load(Cliente.class, id);
    }    
        
        public List&lt;Cliente&gt; lista() {
        return this.session.createCriteria(Cliente.class).list();    
    }  
/*
	@SuppressWarnings("unchecked")
	public List&lt;Cliente&gt; searchSimilarNome(String nome) {
		return session.createCriteria(Cliente.class).add(
				Restrictions.ilike("nome", "%" + nome + "%")).list();
	}
      
*/
        @SuppressWarnings("unchecked")
	public List&lt;Cliente&gt; searchSimilarCpf(String cpf) {
		return session.createCriteria(Cliente.class).add(
				Restrictions.ilike("cpf", "%" + cpf + "%")).list();
	}
      
        
}


package br.com.caelum.lojavirtual.dao;


import br.com.caelum.lojavirtual.modelo.Cliente;
import java.util.List;
import br.com.caelum.lojavirtual.modelo.Usuario;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;


public class Dao&lt;T&gt; {
    
    protected final Session session;
    protected final Class classe;

    protected Dao(Session session, Class classe) {
        this.session = session;
        this.classe = classe;
    }
     protected Session getSession(){
        return session;
    }

	 public void adiciona(T u) {
        this.session.save(u);
        }
         public void exclui(T u) {
        this.session.delete(u);
    }
        public void atualiza(T u) {
        this.session.merge(u);
    }    
     public void salvaupdate(T u) {
        this.session.saveOrUpdate(u);
    }    
    
        public T procura(int id) {
        return (T) session.load(this.classe, id);
    }    
     
    public List&lt;T&gt; listaTudo() {
        return this.session.createCriteria(this.classe).list();    
    }    
    public List&lt;T&gt; consultaParte(String nmCampo, String vlCampo) {                
        return this.session.createCriteria(this.classe).add(Restrictions.ilike(nmCampo, "%" + vlCampo + "%")).list();
    }    
    public List&lt;T&gt; consultaExata(String nmCampo, String vlCampo) {                
  	return session.createCriteria(this.classe).add(Restrictions.eq(nmCampo, "%" + vlCampo + "%")).list();   
    } 

    // CRITERIA PARA USUARIO
    @SuppressWarnings("unchecked")
    public List&lt;Usuario&gt; searchSimilarLogin(String login) {
       return session.createCriteria(Usuario.class).add(
               Restrictions.ilike("login", "%" + login + "%")).list();
    }
  
    // FIM DA CRITERIA PARA CDS 
    // CRITERIA PARA USUARIO
    @SuppressWarnings("unchecked")
    public List&lt;Usuario&gt; searchSimilarId(Long id) {
       return session.createCriteria(Usuario.class).add(
               Restrictions.ilike("id", "%" + id + "%")).list();
    }
    // FIM DA CRITERIA PARA CDS 
  // FIM DA CRITERIA PARA CDS 
    // CRITERIA PARA USUARIO
    @SuppressWarnings("unchecked")
    public List&lt;Usuario&gt; searchSimilarSenha(Long senha) {
       return session.createCriteria(Usuario.class).add(
               Restrictions.ilike("senha", "%" + senha + "%")).list();
    }
    // FIM DA CRITERIA PARA CDS 
   
    // CRITERIA PARA CDS cliente
    @SuppressWarnings("unchecked")
    public List&lt;Cliente&gt; searchSimilarNome(String nome) {
       return session.createCriteria(Cliente.class).add(
               Restrictions.ilike("nome", "%" + nome + "%")).list();
    }
    // FIM DA CRITERIA PARA cliente
    

    
}

Da mais umas dicas ai meu, qual a IDE q vc ta usando, da algum erro ?? Cola a JSP que chama os métodos tbm… assim no cru, fica dificil…

LISTAR OS CLIENTE E CHAMA O FORMULARIO

&lt;%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %&gt;
&lt;%@ taglib uri="http://displaytag.sf.net" prefix="display" %&gt;
&lt;%@ include file="../menu.jsp" %&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
     &lt;head&gt;
        
       &lt;!--             balao                    --&gt;
        &lt;link rel="stylesheet" href="css/jquery.tooltip.css" /&gt;
        &lt;script src="javascripts/tooltipo/jquery.js" type="text/javascript"&gt;&lt;/script&gt;
        &lt;script src="javascripts/tooltipo/jquery.bgiframe.js" type="text/javascript"&gt;&lt;/script&gt;
        &lt;script src="javascripts/tooltipo/jquery.dimensions.js" type="text/javascript"&gt;&lt;/script&gt;
        &lt;script src="javascripts/tooltipo/chili-1.7.pack.js" type="text/javascript"&gt;&lt;/script&gt;
        &lt;script src="javascripts/tooltipo/jquery.tooltip.js" type="text/javascript"&gt;&lt;/script&gt;
        &lt;!--           fim  balao                    --&gt;
        
        &lt;meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/&gt;
        &lt;h1&gt;<P>Lista de Clientes ,<a>Bem Vindo: ${usuario.login}</a></p>&lt;/h1&gt;
        &lt;link rel="stylesheet" type="text/css" href="css/mydvds.css"&gt;&lt;/link&gt;
        
     &lt;!--             balao                    --&gt;
     &lt;!--             ajax js                    --&gt;
&lt;script type="text/javascript" src="js/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/autocomplete.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/searchTitulo.js"&gt;&lt;/script&gt;
   &lt;!--             ajax js            fim        --&gt;
&lt;script type="text/javascript"&gt;
$(function() {
$('#set1 *').Tooltip();

$('img').Tooltip({
	delay: 0
});

$('#yahoo a').Tooltip({
	track: true,
	delay: 0,
	showURL: false,
	showBody: " - "
});

$("#fancy").Tooltip({
	track: true,
	delay: 0,
	showURL: false,
	opacity: 1,
	fixPNG: true,
	showBody: " - ",
	extraClass: "pretty fancy",
	top: -15,
	left: 5
});

$('#pretty').Tooltip({
	track: true,
	delay: 0,
	showURL: false,
	showBody: " - ",
	extraClass: "pretty",
	fixPNG: true,
	opacity: 0.95,
	left: -120
});

$("map *").Tooltip();

$('#right a').Tooltip({
	track: true,
	delay: 0,
	showURL: false,
	extraClass: "right"
});
$('#right2 a').Tooltip({ showURL: false });

$("#block").click($.Tooltip.block);

});
&lt;/script&gt;
   &lt;/head&gt;
      &lt;body&gt;
  
&lt;form action="cliente.searchNome.logic"&gt;
	&lt;tr&gt;&lt;td&gt;
			&lt;fmt:message key="nome"/&gt; 
		&lt;/td&gt;
		&lt;td&gt; 
                   Digite,Nome...:
		 &lt;input autocomplete="off" id="clienteNome" name="cliente.nome" /&gt;
		 &lt;BUTTON type="submit" id="pretty" title="ATENÇÃO:  ${usuario.login} - Click aqui para pesquisar por nome" &gt;Pesquisar<IMG  >&lt;/BUTTON&gt; 
	&lt;/td&gt;&lt;/tr&gt;
&lt;/form&gt;
     &lt;/div&gt;

&lt;form action="cliente.searchCpf.logic"&gt;
	&lt;tr&gt;&lt;td&gt;
			&lt;fmt:message key="cpf"/&gt; 
		&lt;/td&gt;
		&lt;td&gt; 
                   Digite,CPF.......:
		 &lt;input autocomplete="off" id="clienteCpf" name="cliente.cpf" /&gt;
		 &lt;BUTTON type="submit" id="pretty" title="ATENÇÃO:  ${usuario.login} - Click aqui para pesquisar por nome" &gt;Pesquisar<IMG  >&lt;/BUTTON&gt; 
	&lt;/td&gt;&lt;/tr&gt;
&lt;/form&gt;
     &lt;/div&gt;
     

      
            <a >|<img    />Inicial | </a>
            <a >|<img   />Voltar | </a> 
            <a >|<img   />Atualizar | </a> 
            <a >|<img   />Proximos | </a>
            <a   >|<img   />Pesquisar </a>
          
 <a >|<img />Novo </a>
 <a >|<img />Todos </a>

        &lt;/div&gt;
              &lt;div id="blue-box"&gt;     
            &lt;display:table id="cliente" name="${clientes}"  class="its"pagesize="20" requestURI="cliente.lista.logic"&gt;
                &lt;display:column property="nome" sortable="true" /&gt;
                &lt;display:column property="cpf" sortable="true" /&gt;
                &lt;display:column property="telefone" sortable="true" /&gt;
                &lt;display:column&gt;
                    <a >[<img   />  Remover </a>]
                    <a>&lt;---| . |---&gt;</a>
                    <a >[  Editar <img   /></a>]
                    <a>&lt;---| . |---&gt;</a>
                    <a >Detalhes <img   /></a>]
                    
                &lt;/display:column&gt;
            &lt;/display:table&gt;
        &lt;/div&gt;
        &lt;div id="blue-box"&gt;   
     &lt;%@ include file="../rodape.jsp" %&gt;   
    &lt;/body&gt;
&lt;/html&gt;
*******************************
FORMULARIO QUE ENVIA AS ALTERAÇÕES
*******************************

&lt;%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %&gt;
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/&gt;
&lt;title&gt;Cadastro de Cliente&lt;/title&gt;

&lt;link rel="stylesheet" type="text/css" href="css/formulario.css"/&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%@ include file="../menu.jsp" %&gt;
&lt;h1&gt;Cadastro de Cliente&lt;/h1&gt;
<ul >
	&lt;c:forEach var="error" items="${errors.iterator}"&gt;
		<li>${error.key}</li>
	&lt;/c:forEach&gt;
</ul>
&lt;div id="login"&gt;


        &lt;form id="logincad" method="post"  action="cliente.adiciona.logic"&gt;
        
            &lt;fieldset&gt;
            
            &lt;legend&gt;Bem Vindo ao SIGMP&lt;/legend&gt;
            
            &lt;label for="nome"&gt;Nome&lt;/label&gt;
            
            &lt;input type="text" name="cliente.nome" value="${cliente.nome}" size="40"/&gt;    
            <br />
            
            &lt;label for="nome"&gt;CPF&lt;/label&gt;
            
            &lt;input type="text" name="cliente.cpf" value="${cliente.cpf}" size="20"/&gt;    
            <br />
            
            &lt;label for="nome"&gt;RG&lt;/label&gt;
            
            &lt;input type="text" name="cliente.rg" value="${cliente.rg}" size="20"/&gt;    
            <br />
            &lt;label for="nome"&gt;Mãe&lt;/label&gt;
            
            &lt;input type="text" name="cliente.mae" value="${cliente.mae}" size="40"/&gt;    
            <br />
            
            &lt;label for="cidade"&gt;Endereço&lt;/label&gt;
            &lt;input type="text" name="cliente.endereco" value="${cliente.endereco}" size="40"/&gt;    
            
            <br />
            
            &lt;label for="cidade"&gt;Cidade&lt;/label&gt;
            &lt;input type="text" name="cliente.cidade" value="${cliente.cidade}" size="40"/&gt;    
            
            <br />
            
            
            &lt;label for="estado"&gt;Estado&lt;/label&gt;
            &lt;select name="cliente.estado" id="estado"&gt;
                &lt;option selected="selected"&gt;Selecione&lt;/option&gt;
                &lt;option value="AC"&gt;AC&lt;/option&gt;
                &lt;option value="AL"&gt;AL&lt;/option&gt;
                &lt;option value="AP"&gt;AP&lt;/option&gt;
                &lt;option value="AM"&gt;AM&lt;/option&gt;
                &lt;option value="BA"&gt;BA&lt;/option&gt;
                &lt;option value="CE"&gt;CE&lt;/option&gt;
                &lt;option value="DF"&gt;DF&lt;/option&gt;
                &lt;option value="ES"&gt;ES&lt;/option&gt;
                &lt;option value="GO"&gt;GO&lt;/option&gt;
                &lt;option value="MA"&gt;MA&lt;/option&gt;
                &lt;option value="MT"&gt;MT&lt;/option&gt;
                &lt;option value="MS"&gt;MS&lt;/option&gt;
                &lt;option value="MG"&gt;MG&lt;/option&gt;
                &lt;option value="PA"&gt;PA&lt;/option&gt;
                &lt;option value="PB"&gt;PB&lt;/option&gt;
                &lt;option value="PR"&gt;PR&lt;/option&gt;
                &lt;option value="PE"&gt;PE&lt;/option&gt;
                &lt;option value="PI"&gt;PI&lt;/option&gt;
                &lt;option value="RJ"&gt;RJ&lt;/option&gt;
                &lt;option value="RN"&gt;RN&lt;/option&gt;
                &lt;option value="RO"&gt;RO&lt;/option&gt;
                &lt;option value="RR"&gt;RR&lt;/option&gt;
                &lt;option value="RS"&gt;RS&lt;/option&gt;
                &lt;option value="SC"&gt;SC&lt;/option&gt;
                &lt;option value="SP"&gt;SP&lt;/option&gt;
                &lt;option value="SE"&gt;SE&lt;/option&gt;
                &lt;option value="TO"&gt;TO&lt;/option&gt;                
            &lt;/select&gt;                
            
            <br />
            
            &lt;label for="email"&gt;E-mail&lt;/label&gt;
            &lt;input type="text" name="cliente.email" value="${cliente.email}" size="20"/&gt;    
              <br />
            
            &lt;label for="telefone"&gt;Telefone&lt;/label&gt;
            &lt;input type="text" name="cliente.telefone" value="${cliente.telefone}" size="20"/&gt;    
              <br />
           
              &lt;input type="submit" name="cadastrar" id="cadastrar" value="Cadastrar" /&gt;
              <a> |</a>
       <a > &lt;title="Click para pesquisar: ${usuario.login}"/&gt;Pesquisar</a>   
       <a> |</a>
        <a >  Remover </a>
        <a> | </a>
       <a > &lt;title="Click para excluir: ${usuario.login}"/&gt;Atualiza</a>            
       <a > &lt;title="Click para excluir: ${usuario.login}"/&gt;Update</a>            
       <a> |</a>
                          
            &lt;/fieldset&gt;
        &lt;/form&gt;
            
    &lt;/div&gt;
     &lt;form action="cliente.searchcPF.logic"&gt;
	&lt;tr&gt;&lt;td&gt;
			&lt;fmt:message key="nome"/&gt; 
		&lt;/td&gt;
		&lt;td&gt; 
                   Digite.:
		 &lt;input autocomplete="off" id="clienteCpf" name="cliente.cpf" /&gt;
		 &lt;BUTTON type="submit" id="pretty" title="ATENÇÃO:  ${usuario.login} - Click aqui para pesquisar por nome" &gt;Pesquisar CPF<IMG  >&lt;/BUTTON&gt; 
	&lt;/td&gt;&lt;/tr&gt;
&lt;/form&gt;

eu uso o NET GAY = Netbeans !

    cliente.lista.logic&quot;&gt; &lt;title="Click para pesquisar: ${usuario.login}"/&gt;Pesquisar</a>   
    
    cliente.exclui.logic?cliente.id=${cliente.id}&quot;&gt;  Remover </a>
    cliente.atualiza.logic?cliente.id=${cliente.id}&quot;&gt; &lt;title="Click para excluir: ${usuario.login}"/&gt;Atualiza</a>            
    cliente.salvaupdate.logic?cliente.id=${cliente.id}&quot;&gt; &lt;title="Click para excluir: ${usuario.login}"/&gt;Update</a>            
    

 não da erro somente por que eu direciono tudo se não da certo !

up