JSF 2.0 + Hibernate

Pessoal, eu estou aprendendo e criei um CRUD seguindo um tutorial da net. Estou usando o NetBeans e ele não aponta nenhum erro no código, mas ao clicar no botão Salvar, ele não pega os dados digitados na tag <p: inputtext>, vai tudo vazio na hora de salvar no BD. O que poderia ser? Olha o código:

[code]
<h:head>
Cadastro de Clientes
</h:head>
<h:body>
<h:form id=“form”>
<p:panel header=“CLIENTE”>
<p:messages />
<h:panelGrid columns=“2”>
<h:outputLabel value=“NOME:” for=“nome” />
<p:inputText id=“nome” label=“nome” value="#{clienteBean.cliente.nome}" maxlength=“40” size=“40” />
<h:outputLabel value=“TIPO DE DOCUMENTO:” for=“cpf-cnpj”/>
<h:selectOneRadio id=“cpf-cnpj” label=“cpf-cnpj” >
<f:selectItem itemLabel=“CNPJ”/>
<f:selectItem itemLabel=“CPF”/>
</h:selectOneRadio>
<h:outputLabel value=“CPF:” for=“cpf”/>
<p:inputText id=“cpf” label=“cpf” value="#{clienteBean.cliente.nome}" maxlength=“14” size=“40”/>
<h:outputLabel value=“CNPJ:” for=“cnpj”/>
<p:inputText id=“cnpj” label=“cnpj” value="#{clienteBean.cliente.cnpj}" maxlength=“14” size=“40”/>
<h:outputLabel value=“ENDEREÇO:” for=“end”/>
<p:inputText id=“end” label=“end” value="#{clienteBean.cliente.endereco}" maxlength=“40” size=“40”/>
<h:outputLabel value=“NÚMERO” for=“nro”/>
<p:inputText id=“nro” label=“nro” value="#{clienteBean.cliente.numero}" maxlength=“14” size=“40”/>
<h:outputLabel value=“TELEFONE:” for=“tel”/>
<p:inputText id=“tel” label=“tel” value="#{clienteBean.cliente.telefone}" maxlength=“14” size=“40”/>
<h:outputLabel value=“ESTADO” for=“uf”/>
<p:inputText id=“uf” label=“uf” value="#{clienteBean.cliente.estado}" maxlength=“20” size=“40”/>
<h:outputLabel value=“MUNICÍPIO:” for=“mun”/>
<p:inputText id=“mun” label=“mun” value="#{clienteBean.cliente.municipio}" maxlength=“40” size=“40”/>

        <p:commandButton id="btnSalvar" value="SALVAR" actionListener="#{clienteBean.salvar}" update="form"/>
        [/code]

Olhem o código do ClienteBean, onde está o método Salvar():


package br.com.cliente.controllers;

import br.com.cliente.daos.ClienteDao;
import br.com.cliente.daos.ClienteDaoImpl;
import br.com.cliente.models.Cliente;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;


@ManagedBean
@SessionScoped
public class ClienteBean implements Serializable {

    private Cliente cliente = new Cliente();
    private List clientes = new ArrayList();
    private ClienteDao dao = new ClienteDaoImpl();

    //Creates a new instance of ClienteBean
    public ClienteBean() {
        clientes = dao.consultar();
    }

    public void salvar(ActionEvent event) {
        dao.save(cliente);
        cliente = new Cliente();
        clientes = dao.consultar();
    }

    public void editar() {
        cliente = dao.getById(cliente.getIdCliente());
    }

    public void excluir() {
        dao.delete(cliente);
        clientes = dao.consultar();
    }

    public Cliente getCliente() {
        return cliente;
    }

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

    public List getClientes() {
        return clientes;
    }

    public void setClientes(List clientes) {
        this.clientes = clientes;
    }
}

A classe Cliente:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cliente.models;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;


/**
 *
 * @author Filipe
 */
@Entity
public class Cliente implements Serializable {
    
    @Id //Define que a variavel abaixo sera o ID no banco
    @GeneratedValue(strategy= GenerationType.IDENTITY) //Gera um ID para cada cliente
    private Long idCliente;
    @Column(name="NOME", length=80) //define nome e tamanho da coluna no bd
    private String nome;
    @Column(name="CPF", length=12)
    private String cpf;
    @Column(name="CNPJ", length=14)
    private String cnpj;
    @Column(name="ENDERECO", length=80)
    private String endereco;
    @Column(name="NUMERO", length=20)
    private String numero;
    @Column(name="TELEFONE", length=20)
    private String telefone;
    @Column(name="ESTADO", length=80)
    private String estado;
    @Column(name="MUNICIPIO", length=80)
    private String municipio;

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Long getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(Long idCliente) {
        this.idCliente = idCliente;
    }

    public String getMunicipio() {
        return municipio;
    }

    public void setMunicipio(String municipio) {
        this.municipio = municipio;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
     
}

Olhem o que aparece no console ao clicar no botão salvar:


 insert 
        into
            Cliente
            (CNPJ, CPF, ENDERECO, ESTADO, MUNICIPIO, NOME, NUMERO, TELEFONE) 
        values
            (?, ?, ?, ?, ?, ?, ?, ?)

O que poderia ser o erro??

Obrigado.

Bom vc tem um erro de Ctrl “C” Ctrl "V "no seu xhtml, o value do seu campo CPF esta apontando para “nome” e não para cpf.!!!

Obrigado. Mas esse não era o problema. O que será que pode ser?

Faz o seguinte retira o @Column de todos os atributos e tenta rodar, não se preocupe que não vai interferir na execução.

Nadaa!!! =//

Tente colocar no botão de salvar apenas o atributo action ao invés de actionListener:

<p:commandButton id="btnSalvar" value="SALVAR" action="#{clienteBean.salvar}" update="form"/>  

A no bean, altere a assinatura do seu método salvar para:

public void salvar() {  
        dao.save(cliente);  
        cliente = new Cliente();  
        clientes = dao.consultar();  
} 

Não deu certo!!! Não sei mais o que pode ser…já tentei várias coisas =//

Você ta dando commit na transação no seu método save do dao?

Acredito que sim, olha o método save do dao…

public T save(T objeto) { try { Object obj = null; HibernateUtility.beginTransaction(); obj = HibernateUtility.getSession().merge(objeto); HibernateUtility.commitTransaction(); HibernateUtility.closeSession(); return (T) obj; } catch (HibernateException hibernateException) { cancel(); throw hibernateException; } }

Amigo, você já tentou utilizar o método save?

public T save(T objeto) {  
        try {  
            Object obj = null;  
            HibernateUtility.beginTransaction();  
            obj = HibernateUtility.getSession().save(objeto);  
            HibernateUtility.getSession().getTransaction().commit();
            HibernateUtility.closeSession();  
            return (T) obj;  
        } catch (HibernateException hibernateException) {  
            cancel();  
            throw hibernateException;  
        }  
}