style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problemas en Guardar valor SelectoneMenu JSF

Deseo guardar el cliente pero tengo problemas en capturar el valor del selectonemenu, podrian ayudarme en donde estoy fallando porque no me esta funcionando. Si quito el selectonemenu me guarda pero cuando lo pongo el valor viene null, si necesitan mas informacion del proyecto me avisan

Clase del Cliente

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.TavDom.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;

/**
 *
 * @author root
 */

@Entity
@Table(name = "cliente")
public class Cliente implements Serializable{

    @Id
    @Column(name = "codcliente")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int codCliente;

    @Column(name = "nombres")
    private String nombres;

    @Column(name = "apellidos")
    private String apellidos;

    @Column(name = "direccion")
    private String direccion;

   
    @Column(name = "cedula", unique=true)
    private String cedula;

    @Column(name = "negocio")
    private String negocio;

    @Column(name = "rnc", unique=true)
    private String rnc;

    @Column(name = "credito")
    private Integer credito;

    @Column(name = "telefono")
    private String telefono;

    @Column(name = "estatus_negocio")
    private String estatus_negocio;
   
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "codtipo_comprobante")
    private TipoComprobante tipoComprobante;
   
    @OneToMany(mappedBy = "cliente", fetch = FetchType.LAZY)
    private Set<Factura> factura = new HashSet();
   
    public Cliente() {
       
    }

    public Cliente(String nombres, String apellidos, String direccion, String cedula, String negocio, String rnc, Integer credito, String telefono, String estatus_negocio, TipoComprobante tipoComprobante) {
        this.nombres = nombres;
        this.apellidos = apellidos;
        this.direccion = direccion;
        this.cedula = cedula;
        this.negocio = negocio;
        this.rnc = rnc;
        this.credito = credito;
        this.telefono = telefono;
        this.estatus_negocio = estatus_negocio;
        this.tipoComprobante = tipoComprobante;
    }

    public int getCodCliente() {

        return codCliente;
    }

    public void setCodCliente(int codCliente) {

        this.codCliente = codCliente;
    }

    public String getNombres() {

        return nombres;
    }

    public void setNombres(String nombres) {

        this.nombres = nombres;
    }

    public String getApellidos() {

        return apellidos;
    }

    public void setApellidos(String apellidos) {

        this.apellidos = apellidos;
    }

    public String getDireccion() {

        return direccion;
    }

    public void setDireccion(String direccion) {

        this.direccion = direccion;
    }
    public String getNegocio() {

        return negocio;
    }

    public void setNegocio(String negocio) {

        this.negocio = negocio;
    }

    public String getTelefono() {

        return telefono;
    }

    public void setTelefono(String telefono) {

        this.telefono = telefono;
    }

    public String getRnc() {

        return rnc;
    }

    public void setRnc(String rnc) {

        this.rnc = rnc;
    }

    public Integer getCredito() {

        return credito;
    }

    public void setCredito(Integer credito) {

        this.credito = credito;
    }

    public String getCedula() {

        return cedula;
    }

    public void setCedula(String cedula) {

        this.cedula = cedula;
    }

    public String getEstatus_negocio() {
        return estatus_negocio;
    }

    public void setEstatus_negocio(String estatus_negocio) {
        this.estatus_negocio = estatus_negocio;
    }

    public TipoComprobante getTipoComprobante() {
        return tipoComprobante;
    }

    public void setTipoComprobante(TipoComprobante tipoComprobante) {
        this.tipoComprobante = tipoComprobante;
    }

    public Set<Factura> getFactura() {
        return factura;
    }

    public void setFactura(Set<Factura> factura) {
        this.factura = factura;
    }
   
   
}

Clase de Tipos_Comprobantes

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.TavDom.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author root
 */

@Entity
@Table(name = "tipos_comprobantes")
public class TipoComprobante implements Serializable{

    @Id
    @Column(name = "codtipo_comprobante")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer codTipoComprobante;

    @Column(name = "clasificacion")
    private String clasificacion;

    @Column(name = "tipo_comprobante")
    private String tipoComprobante;

    @OneToMany(mappedBy = "tipoComprobante")
    private Set<Cliente> clientes = new HashSet<>();

   
    public TipoComprobante() {
    }
   
    public TipoComprobante(String clasificacion, String tipoComprobante, Set<Cliente> clientes) {
        this.clasificacion = clasificacion;
        this.tipoComprobante = tipoComprobante;
        this.clientes = clientes;
    }

    public Integer getCodTipoComprobante() {
        return codTipoComprobante;
    }

    public void setCodTipoComprobante(Integer codTipoComprobante) {
        this.codTipoComprobante = codTipoComprobante;
    }

    public String getClasificacion() {
        return clasificacion;
    }

    public void setClasificacion(String clasificacion) {
        this.clasificacion = clasificacion;
    }

    public String getTipoComprobante() {
        return tipoComprobante;
    }

    public void setTipoComprobante(String tipoComprobante) {
        this.tipoComprobante = tipoComprobante;
    }

    public Set<Cliente> getClientes() {
        return clientes;
    }

    public void setClientes(Set<Cliente> clientes) {
        this.clientes = clientes;
    }

    @Override
    public String toString() {
        return tipoComprobante;
    }
   
   
}

Servicio del Cliente

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.TavDom.services;

import com.TavDom.model.Cliente;
import com.TavDom.model.TipoComprobante;
import java.util.List;

/**
 *
 * @author root
 */

public interface ClienteService {
   
    public Cliente guardarCliente(Cliente cliente);
   
    public Cliente actualizarCliente(Cliente cliente);
   
    public Cliente eliminarCliente(Cliente cliente);
   
    public List<Cliente> listarCliente();
   
    public List<TipoComprobante> listarTiposComprobantes();
   
   
}

Implementacion del servicio del Cliente

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.TavDom.services.imp;

import com.TavDom.dao.TipoComprobanteDao;
import com.TavDom.dao.clienteDao;
import com.TavDom.model.Cliente;
import com.TavDom.model.TipoComprobante;
import com.TavDom.services.ClienteService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 *
 * @author root
 */

@Service
public class ClienteServiceImpl implements ClienteService{

    @Autowired
    private clienteDao cDao;
   
    @Autowired
    private TipoComprobanteDao tDao;
   
    @Override
    public Cliente guardarCliente(Cliente cliente) {
        return cDao.save(cliente);
    }

    @Override
    public Cliente actualizarCliente(Cliente cliente) {
        return cDao.save(cliente);
    }

    @Override
    public Cliente eliminarCliente(Cliente cliente) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public List<Cliente> listarCliente() {
        return cDao.findAll();
    }

    @Override
    public List<TipoComprobante> listarTiposComprobantes() {
        return tDao.findAll();
    }
   
   
}

Bean del Cliente

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.TavDom.bean;

import com.TavDom.model.Cliente;
import com.TavDom.model.TipoComprobante;
import com.TavDom.services.imp.ClienteServiceImpl;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.annotation.RequestScope;

/**
 *
 * @author jefrey
 */

@Controller
@RequestScope
public class ClienteBean {

    @Autowired
    private ClienteServiceImpl imp;
   
    private List<TipoComprobante> listaTiposComprobantes;

    private Cliente cliente = new Cliente();

    private List<Cliente> list;

    private void init() {
        list = imp.listarCliente();
    }

    public void initNew() {
        init();
    }

    public ClienteBean() {
    }

    public ClienteBean(Cliente cliente, List<Cliente> list) {
        this.cliente = cliente;
        this.list = list;
    }

    public ClienteServiceImpl getImp() {
        return imp;
    }

    public void setImp(ClienteServiceImpl imp) {
        this.imp = imp;
    }

    public Cliente getCliente() {
        return cliente;
    }

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

    public List<Cliente> getList() {
        return list;
    }

    public void setList(List<Cliente> list) {
        this.list = list;
    }
   
    public void guardarCliente(){
        imp.guardarCliente(cliente);
        init();
    }

    public List<TipoComprobante> getListaTiposComprobantes() {
        this.listaTiposComprobantes = imp.listarTiposComprobantes();
        return listaTiposComprobantes;
    }
   
   
}

Codigo xhtml

                            <p:selectOneMenu id="cbxtipocomprobante" value="#{clienteBean.cliente.tipoComprobante}">
                                <f:selectItem noSelectionOption="true"
                                              itemLabel = "Seleccione el Tipo de Empresa"/>
                                <f:selectItems value="#{clienteBean.listaTiposComprobantes}"
                                               var="tipocomp"
                                               itemLabel="#{tipocomp.tipoComprobante}"
                                               itemValue="#{tipocomp.codTipoComprobante}"/>
                            </p:selectOneMenu>

                            <p:commandButton value="Guardar" actionListener="#{clienteBean.guardarCliente()}"
                                             update=":formMostrarClientes:ẗablaClientes"
                                             oncomplete="PF('dialogNuevoCliente').hide();"/>
                            <p:commandButton value="Cancelar" onclick="PF('dlgNuevoCliente').hide();"/>

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">