Erro de conversão ao definir o valor '' para 'null Converter'

Pessoal, ta dando esse erro qnd tento inserir um objeto no array ! To usando um converter, mas acho q tem algo errado nele…

O erro eh esse: Erro de conversão ao definir o valor ‘’ para ‘null Converter’.


public class Produto implements Serializable{

	private static final long serialVersionUID = -2477528265610024554L;
	
	
	public Item nomeItem;	
	public int quantidadeItem;
	
	//gets e setd
        // HashCode e equals


@ManagedBean(name="carrinhoBean")
@SessionScoped

public class CarrinhoBean {
	
	
	private Produto produto = new Produto();
	ItemBean itemBean = new ItemBean();	
	
	public String car;
	
	public List<Produto> lista = new ArrayList<Produto>();  
	public ArrayList<String> carrinhoSessao = new ArrayList<String>();
	

	public List<Produto> listar() {  
        return this.lista;  
    }  
  
      

	
    public String insere() {  
    	
    	Produto produto = new Produto();
    	produto.setNomeItem(produto.nomeItem);
    	produto.setQuantidadeItem(produto.quantidadeItem);
    	
    	lista.add(produto);
    	return null;
    }  
    
    
    public String remove(Produto produto) {  
    	
    	lista.remove(produto);
    	return null;  
    }

	public List<Produto> getLista() {
		
		
	        return this.lista;  
	
	}
	
	 public Produto buscarPorNome(String n){  
	        Produto c = null;  
	        int pos = 0;  
	        n= itemBean.getItemm();
	        
	        while(pos< lista.size()){  
	            c = lista.get(pos);  
	              
	            if(c.getNomeItem().equals(n)){ 
	            	System.out.println(c);
	            	return c;    
	            }  
	            pos++;  
	        }  
	        return null;  
	    }  

	 
	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

}


@FacesConverter(value = "itemConverter", forClass=CarrinhoBean.class)
public class ItemConverter implements Converter {

	CarrinhoBean carrinhoBean = new CarrinhoBean();
	
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		return carrinhoBean.buscarPorNome(value);
	}
	

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object object) {
		 
		if(object != null && object instanceof CarrinhoBean) {    
	            return ((Produto)object).getNomeItem().toString();   
	        }    
	        return null;    
	
}  
}

Acredito que o seu String value no primeiro metodo do Converter está vindo nulo, como você não está tratando ai dá erro.

Olhe neste post:

http://www.guj.com.br/java/296299-selectonemenu#1574188

Coloquei um exemplo que utilizo como converter la pra o amigo !

[quote=darksteel3000]Acredito que o seu String value no primeiro metodo do Converter está vindo nulo, como você não está tratando ai dá erro.

Olhe neste post:

http://www.guj.com.br/java/296299-selectonemenu#1574188

Coloquei um exemplo que utilizo como converter la pra o amigo ![/quote]

To vendo seu exemplo… Mesmo assim to tendo um pouco de dificuldade p implementar no meu caso… :confused:

Mas o converter em si, é igual pra todos os casos. Qual tua dificuldade?

Minha dificuldade eh antes do converter… eu to add obetos no ArrayList e ele ta sobrescrevendo os objetos…

Quando eu mando imprimir o arrayList ele mostra q tem 3 objestos iguais… Exemplo: eu add 3 obejtos n o array, quando
eu clico em um botao q serve p imprimir o arrayList ele mostra isso:

[requisicao.carrinho.Produto@3c1, requisicao.carrinho.Produto@3c1, requisicao.carrinho.Produto@3c1]

Sao os mesmo objetos… Ele ta sobrescrevendo… Meu metodo de inserir ta assim(atualmente):


  public String insere() {  
    	Produto produto = new Produto();
    	lista.add(produto);
    	return null;
    }  
    

Sao 2 atributos q eu add no array… O obejto Item e a quantidade Solicitada… Essa eh parte q add no array na minha pagina jsf. O valor da quantidadeSolicitada sempre
ta vindo = 0 ! Parece q nao ta capturando o valor do inputtext… E o nome do item Nao aparece qnd lista por causa do erro no converter.

&lt;fieldset&gt;&lt;legend&gt;Requisição&lt;/legend&gt;
				&lt;h:panelGrid columns="3"&gt;
				&lt;h:outputText value="Item:"/&gt;  
        		&lt;h:selectOneMenu id="selecioneitem" value="#{carrinhoBean.produto.nomeItem }" converter="itemConverter" &gt;
 				&lt;f:selectItem itemLabel="Selecione" itemValue=""/&gt;  
 				&lt;f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/&gt;
				&lt;/h:selectOneMenu&gt;	
				<br/>
				&lt;h:outputLabel value="Quantidade:" for="quantidadeItem" /&gt;
				&lt;h:inputText id="quantidadeItem" label="Quantidade"
					value="#{carrinhoBean.produto.quantidadeItem}" required="true" size="4"/&gt;
				<br/>	
				&lt;h:commandButton action="#{carrinhoBean.insere}"  value="Adicionar" /&gt;
				&lt;/h:panelGrid&gt;
				&lt;/fieldset&gt;	
				
				<br/>
				<br/>
				&lt;fieldset&gt;&lt;legend&gt;Meus Itens&lt;/legend&gt;
				&lt;h:panelGrid columns="3"&gt;
				&lt;h:dataTable value="#{carrinhoBean.lista}" var="car" rules="rows" &gt;  
                &lt;f:facet name="caption"&gt;  
                    <br />  
                &lt;/f:facet&gt;  
              
               &lt;h:column&gt;
                    &lt;f:facet name="header"&gt;Nome do Item&lt;/f:facet&gt;  
                  &lt;h:outputText value="#{car.nomeItem}" /&gt; 
                &lt;/h:column&gt;  
                &lt;h:column&gt;  
                    &lt;f:facet name="header"&gt;Qntd. Solicitada&lt;/f:facet&gt;  
                   &lt;h:outputText value="#{car.quantidadeItem}" /&gt; 
                &lt;/h:column&gt;  
                &lt;h:column&gt;
               &lt;h:commandLink action= "#{carrinhoBean.remove(car)}"
				 onclick="if (!confirm('Confirma a exclusão  ?')) return false;"&gt;
					&lt;h:graphicImage library="imagens" name="apagar.png" style="border:0" /&gt;
				&lt;/h:commandLink&gt;
                &lt;/h:column&gt;
            &lt;/h:dataTable&gt; 
            &lt;/h:panelGrid&gt;
            &lt;/fieldset&gt;
             <br/>
             <br/>
             &lt;h:commandButton action="#{carrinhoBean.finalizar}" value="Finalizar" /&gt; 
             &lt;h:commandButton action="#{requisicaoBean.salvar}" value="salvar" /&gt; 
             <br/>
             <br/>
        &lt;/h:form&gt;  
    &lt;/ui:define&gt;  
&lt;/ui:composition&gt;  
&lt;/html&gt;  

Ja tenho um tempao empacado nessa parte…

Se eu entendi bem, teu metodo de inserir, insere os mesmos objetos sempre, mesmo selecionando diferentes no combobox ele adiciona os mesmos.

Faz o seguinte, me manda teu converter.

[quote=darksteel3000]Se eu entendi bem, teu metodo de inserir, insere os mesmos objetos sempre, mesmo selecionando diferentes no combobox ele adiciona os mesmos.

Faz o seguinte, me manda teu converter.[/quote]

Exemplo:

Eu add 3 objetos…

(nome do item) (quantidade)

caneta 24
mouse 11
Papel 15

Na listagem ele mostra o ultimo 3x…

Papel 15
Papel 15
Papel 15


@FacesConverter(value = "itemConverter", forClass=CarrinhoBean.class)

public class ItemConverter implements Converter {
	CarrinhoBean carrinhoBean = new CarrinhoBean();
	
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		 
		
		return carrinhoBean.buscarPorNome(value);
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object object) {
		 
		if(object != null && object instanceof CarrinhoBean) {    
	            return ((Produto)object).getNomeItem().toString();   
	        }    
	        return null;    
	
}  
}

Nos dois metodos do converter estais buscando pelo nome, faz o seguinte:

Busca pelo Id pelos 2 e testa.

[quote=darksteel3000]Nos dois metodos do converter estais buscando pelo nome, faz o seguinte:

Busca pelo Id pelos 2 e testa.[/quote]

Como eh esse metodo buscarPorId ?
Eu sei o q ele faz… Mas kd o codigo dele ?

Ham? Amigo, esse metodo é seu mesmo, vc provavelmente tem um metodo no DAO que consulta suas entidades pelo id certo?

Mas eu acho q o meu metodo q faz essa busca ta errado… Por isso q eu queria ver o seu metodo de busca.

Amigo, o metodo de busca é o do DAO mesmo. Vc n sabe fazer um metodo pra buscar por ID da entidade? Caso não saiba, acho que deveria parar um pouco, pra ler os livros:

Use a Cabeça - JAVA e depois Programação Java para WEB

[quote=darksteel3000]Amigo, o metodo de busca é o do DAO mesmo. Vc n sabe fazer um metodo pra buscar por ID da entidade? Caso não saiba, acho que deveria parar um pouco, pra ler os livros:

Use a Cabeça - JAVA e depois Programação Java para WEB[/quote]

N sei fazer um metodo pra buscar por Id da entidade… Vc poderia me ajudar nisso ?

To fazendo um sistema baseado no livro programacao java p web. Ja fiz muita coisa… Ate as permissoes estao funcionando perfeitamente… Mas eu empaquei nesse problema.

Entao, me ajuda a fazer esse metodo de busca p eu colocar ele no getAsObject (converter)


	&lt;h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produto.objetoItem}" converter="itemConverter"&gt;
 				&lt;f:selectItem itemLabel="Selecione" itemValue=""/&gt;  
 				&lt;f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/&gt;
				&lt;/h:selectOneMenu&gt;	

Eu tenho q passar como parâmetro a id “itemSelecionado” n eh isso ?

Vou procurar o primeiro livro q vc falou.

Abracos

Eu tenho esse livro. Nele mostra sim, como buscar entidades pelo ID.

Programacao java para web tem isso ? Vou dar uma olhada, mas eu nao vi essa parte.

Vc lembra a parte exata q tem isso ? Outra coisa: Meu raciocínio do post anterior esta correto ?

[]'s

Amigo, tem sim, na parte que ele mostra os dados criados no hibernate, ele mostra como fazer.

Tipo, eu tenho pra mim que vc deveria ja estar sabendo fazer isso de olhos fechados para poder ir pra o JSF. Uma consulta por ID, é a coisa mais facil que existe no mundo, quando se usa Criteria então é que fica facil mesmo. Não entendo o porque de estais vendo assuntos como JSF, Converters e tals, e não saber fazer a consulta mais basica de todas.

porque vc n aceita minha sugeswtão, e lê o livro, Java Como Programar de Deitel, depois pega umas apostilas de Hibernate, e depois sim parte pra esse livro?

[quote=darksteel3000]Amigo, tem sim, na parte que ele mostra os dados criados no hibernate, ele mostra como fazer.

Tipo, eu tenho pra mim que vc deveria ja estar sabendo fazer isso de olhos fechados para poder ir pra o JSF. Uma consulta por ID, é a coisa mais facil que existe no mundo, quando se usa Criteria então é que fica facil mesmo. Não entendo o porque de estais vendo assuntos como JSF, Converters e tals, e não saber fazer a consulta mais basica de todas.

porque vc n aceita minha sugeswtão, e lê o livro, Java Como Programar de Deitel, depois pega umas apostilas de Hibernate, e depois sim parte pra esse livro?[/quote]

Pois eh, com hibernate, spring einterface eu nao tenho dificuldade nenhuma… Mas se tratando de arrayList e outras coisas eu ainda tenho uma certa dificuldade…
Vc ainda nao respondeu se o meu raciocínio esta correto (em relacao ao outro post)… To dando uma olhada no livro.

Amigo, primeiramente sobre sua pergunta feita em alguns posts atras: Não, vc tem de passar é o objeto como value, o converter vai pegar o Id automagicamente xD.

Sobre seu ultimo comentario, cara, tipo… Como vc diz que não tem dificuldades em Hibernate e Spring ( que pra mim é o top dos tops em dificuldades de se aprender ), e tem dificuldades em Arraylists e coisas semelhantes?

Não existe pow, vc com certeza tem dificuldades em Hibernate e Spring, imagina a situação, teu chefe chega perto de ti, e te pede pra em 5 horas vc preparar um ambiente para o desenvolvimento de um projeto utilizando, JSF, hibernate e Spring. Vc faria? Com o livro é muito bom. Mas não se esqueça que o livro esta mostrando uma forma que geralmente não é utilizada nos projetos, mas ensinando com mais didatica.

Minha recomendação novamente é que. Pares tudo, e começe a ler o livro "Java como programar ( de 1100 paginas ) do Deitel. Cara, depois dele vc vai realmente saber das coisas, pois na altura do campeonando pra vc estar vendo hiebrnate e spring, não deverias mesmo estar com dificuldades em um simples ArrayList