Erro SelectOneMenu com primifaces, sistema em EJB3.1

Boa tarde a todos, estou desenvolvendo um sistema Web com EJB3.1, JSF2.0, primifaces 3.4.
Para resumir , meu erro está no selectOneMenu do primifaces, na hora de fazer o insert aparece o seguinte erro(Erro de conversão ao definir o valor ‘30’ para ‘null Converter’. )
Minhas entidades já estão com hachcode() e equals().
Já estou no meu limite, alguem pode me ajudar? Deus abençoe

(Meu Converter)

[code]package br.com.startup.s3.util;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import javax.faces.convert.FacesConverter;
import javax.faces.model.SelectItem;

@FacesConverter(value = “contatoConverter”)
public class ContatoConverter implements Converter{

private int index;  
  
public Object getAsObject(FacesContext facesContext, UIComponent uicomp, String value) {  
    List<SelectItem> items = new ArrayList<SelectItem>();  
    List<UIComponent> uicompList = uicomp.getChildren();  
    for(UIComponent comp: uicompList){  
        if(comp instanceof UISelectItems){  
            items.addAll((List<SelectItem>) ((UISelectItems)comp).getValue());  
        }  
    }  
    return "-1".equals(value) ? null :  items.get(Integer.valueOf(value)).getValue();  
}  

public String getAsString(FacesContext facesContext, UIComponent uicomp, Object entity) {  
    return entity == null ? "-1" : String.valueOf(index++);  
}  

}

(Meu SelectOneMenu)

                                            <h:outputText value="Clientes: " />  
				        <p:selectOneMenu value="#{contatoBean.contato.cliente}" effect="fade" converter="#{contatoConverter}"> 
				            <f:selectItem itemLabel="-Escolha-" itemValue="#" />   
				            <f:selectItems value="#{contatoBean.clientes}" var="contato" itemLabel="#{contato.nome}" itemValue="#{contato.idCliente}"/> 
				        </p:selectOneMenu>  

(Meu Managed Bean)

package br.com.startup.s3.controller;

import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.startup.s3.ejb.ClienteFacadeBean;
import br.com.startup.s3.ejb.ContatoFacadeBean;
import br.com.startup.s3.entidade.Cliente;
import br.com.startup.s3.entidade.Contato;
import br.com.startup.s3.ex.StartupException;

@ManagedBean(name=“contatoBean”)
@SessionScoped
public class ContatoBean {

@EJB
private ContatoFacadeBean contatoFacade;

@EJB
private ClienteFacadeBean clienteFacade;


private Contato contato;
private Cliente cliente;
private List<Contato>contatos;  
private List<Cliente>clientes;

public ContatoBean() {
	contato = new Contato();
}


//Inserir
	public void prepararInserir(){
		contato = new Contato();
	}
	
	public void prepararAtualizar(Integer id) throws StartupException{
		contato = contatoFacade.buscarContatoPelaChave(id);
		
	}
	
	
	public void inserir() throws StartupException{
		
		contatoFacade.inserirContato(contato);
		
		//Mensagem Growl
		FacesContext context = FacesContext.getCurrentInstance();  
        context.addMessage(null, new FacesMessage("contato cadastrado com sucesso! "));
        contato = new Contato();
		
	}
	
	public void atualizar() throws StartupException{
		
        contatoFacade.alterarContato(contato);
		
		//Mensagem Growl
		FacesContext context = FacesContext.getCurrentInstance();  
        context.addMessage(null, new FacesMessage("contato atualizado com sucesso! "));
        contato = new Contato();
	}
	
	
	public void deletar() throws StartupException{
		FacesContext context = FacesContext.getCurrentInstance();
		boolean resultado =  contatoFacade.removerContato(contato);
		
		 if (resultado) {
			 contato = new Contato();
			 context.addMessage(null, new FacesMessage("contato removido com sucesso!"));
		 } else {
		 context.addMessage(null, new FacesMessage("Falha ao remover contato!"));
		}
		
	}


	
	
	/////GET e Set
	
	public ContatoFacadeBean getContatoFacade() {
		return contatoFacade;
	}


	public void setContatoFacade(ContatoFacadeBean contatoFacade) {
		this.contatoFacade = contatoFacade;
	}


	public Contato getContato() {
		return contato;
	}


	public void setContato(Contato contato) {
		this.contato = contato;
	}


	
	public List<Contato> getContatos() throws StartupException {
		contatos = contatoFacade.buscarTodosContato();
		return contatos;
	}


    
	


//////////////////////////////////Clientes
	
	
	
	
	

	public ClienteFacadeBean getClienteFacade() {
		return clienteFacade;
	}


	public Cliente getCliente() {
		return cliente;
	}


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


	public void setClienteFacade(ClienteFacadeBean clienteFacade) {
		this.clienteFacade = clienteFacade;
	}


	public List<Cliente> getClientes() throws StartupException {
		clientes = clienteFacade.buscarTodosClientes();
		return clientes;
	}


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

}

[/code]

Cara coloca teu código dentro das tag code fica mais fácil pra entender…

[quote=jweibe]Cara coloca teu código dentro das tag code fica mais fácil pra entender…
[/quote]

Foi mal, é a primeira vez em um forum.

boa noite…

vc tem certeza que o

items.get(Integer.valueOf(value)).getValue()

está retornar um Cliente?

tá meio confusa a lógica desse seu converter…

se o seu

itemValue="#{contato.idCliente}"

é um “inteiro” é bem provavel que o seu converter

items.get(Integer.valueOf(value)).getValue()  

esteja retornando um “inteiro” também…

então seu

value="#{contatoBean.contato.cliente}"
deve ser do mesmo tipo

[quote=paulovloghan]se o seu

itemValue="#{contato.idCliente}"

é um “inteiro” é bem provavel que o seu converter

items.get(Integer.valueOf(value)).getValue()  

esteja retornando um “inteiro” também…

então seu

value="#{contatoBean.contato.cliente}"
deve ser do mesmo tipo

[/quote]

É ele é um inteiro, fiz o converter de várias maneiras, e sempre estava dando erro de id null, pode ser isto mesmo, vou mudar, e te falo, é a primeira vez que trabalho com JSF e primifaces, estava trabalhando com JSP puro, e sistema cresceu d+ e precisei mudar tudo.

[quote=jeferson alves][quote=paulovloghan]se o seu

itemValue="#{contato.idCliente}"

é um “inteiro” é bem provavel que o seu converter

items.get(Integer.valueOf(value)).getValue()  

esteja retornando um “inteiro” também…

então seu

value="#{contatoBean.contato.cliente}"
deve ser do mesmo tipo

[/quote]

É ele é um inteiro, fiz o converter de várias maneiras, e sempre estava dando erro de id null, pode ser isto mesmo, vou mudar, e te falo, é a primeira vez que trabalho com JSF e primifaces, estava trabalhando com JSP puro, e sistema cresceu d+ e precisei mudar tudo.[/quote]

Amigo eu mudei para

                                         [code]   <h:outputText value="Clientes: " />  
				        <p:selectOneMenu value="#{contatoBean.contato.cliente.idCliente}" effect="fade" converter="#{contatoConverter}"> 
				            <f:selectItem itemLabel="-Escolha-" itemValue="#" />   
				            <f:selectItems value="#{contatoBean.clientes}" var="contato" itemLabel="#{contato.nome}" itemValue="#{contato.idCliente}"/> 
				        </p:selectOneMenu>  [/code]

o erro mudou para

{contatoBean.contato.cliente.idCliente}": Target Unreachable, 'cliente' returned null

to mudando algumas coisas mas o erro persiste.

Alguem já viu isto?