JSF 2.0 - Como pegar objeto inteiro no selectOneMenu

[quote=Shoknes]É, também não analisei muito sobre o List, apenas resolvi meu problema de “usuario.cidade” receber um “objeto - Cidade - selecionado no selectOneMenu” mais tarde testo mais e posto comentários.

ps.: objeto Cidade entre aspas né.[/quote]

Ok, mas fique atento pois você resolveu o seu problema especifico e pontual. Fique ciente que certamente vai precisar fazer a mesma coisa em vários outros lugares e em inúmeras situações. Para evitar trabalhao e retrabalho desnecessarios, considere usar a solução proposta no post.

Então lindberg713, eu tô supondo até aqui que esse SimpleIndexConverter é reutilizável e inclusive poderá ser único à aplicação, será que estou enganado?

Cara, no momento to cheio de coisa e nao da pra eu parar e avaliar isso. Se vc puder avaliar isso e dar o feedback pra o pessoal seria muito bem vindo.

Abraço.

[quote=Shoknes]
o único problema/incoveniente que encontrei é que no o meu método, por exemplo, getCidades deve retornar um List e não um List, mas talvez seja apenas uma falta de atenção minha .[/quote]
Ah cara, só pra deixa claro o incoveniente que eu falei aqui, é no ManagedBean e não em outros Etities, por exemplo Estado.

[quote=lindberg713]Já passei pelo mesmo problema ha algum tempo atrás e posto aqui a minha solução para JSF 2 usando prime faces. Tenho tb uma solução para JSF 1 usando richfaces, quem tiver interesse postar aqui que eu mando.

JSF 2.0 COM PRIME FACES.

[color=red]ANTES DE COMEÇAR É NECESSÁRIO DIZER QUE PARA A SOLUÇÃO ABAIXO FUNCIONAR VOCÊ TEM QUE NA CLASSES DE SUAS ENTIDADES VOCÊ SOBRESCREVER EXPLICITAMENTE OS MÉTODOS equals E hashcode. Para o exemplo abaixo funcionar a classe Cliente teria que sobrescrever o método equals e hashcode. Como você não vai ta fazendo isso em todas as suas classes de entidade, então basta criar uma superclasse abstrata de entidade e sobrescrever esses métodos lá e todas as entidades estendenrão desta. Por exemplo uma classe chamada Entidade que é abstrata.[/color]

[color=red]OUTRA COISA IMPORTANTE É QUE DA FORMA COMO O CONVERTER ESTA IMPLEMENTADO ABAIXO ELE ESPERA QUE O ITEM TENHA UM ATRIBUTO CHAMADO ‘id’ QUE É O IDENTIFICADOR NORMALMENTE USADO PARA ENTIDADES. CASO NO SEU PROJETO TENHA OUTRO PADRÃO FIQUE A VONTADE PARA MUDAR A PROPRIEDADE NO MÉTODO getIdByReflection DO CONVERTER.[/color]

Para tal é necessário colocar o converter abaixo:

import java.lang.reflect.Field;
import java.util.Collection;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

/**
 * 
 * @author Victor Lindberg
 *
 */
@FacesConverter("selectOneUsingObjectConverter")
public class SelectOneUsingObjectConverter implements Converter{
	
	@Override
    public Object getAsObject(FacesContext context,
        UIComponent component, String value) {
        if (value == null || value.equals(""))
            return null;

        try{
        	Long id = Long.valueOf(value);
        	Collection items =  (Collection) component.getAttributes().get("items");
        	return findById(items, id);
        }catch(Exception ex){
        	throw new ConverterException("Não foi possível aplicar conversão de item com valor ["+value+"] no componente ["+component.getId()+"]", ex);
        }
    }
	
    @Override
	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		if (value == null)
			return "";
		
		return getIdByReflection(value).toString();
	}
    
    private Object findById(Collection collection, Long idToFind){
    	for (Object obj : collection){
    		 Long id = getIdByReflection(obj);
    		 if (id == idToFind)
    			 return obj;
    	}
    	
    	return null;
    }
    
    private Long getIdByReflection(Object bean){
    	try{
    		Field idField = bean.getClass().getDeclaredField("id");
    		idField.setAccessible(true);
    		return (Long) idField.get(bean);
    	}catch(Exception ex){
    		throw new RuntimeException("Não foi possível obter a propriedade 'id' do item",ex);
    	}
    }

}

Nosso MB:

[code]import java.util.List;

import javax.faces.bean.ManagedBean;

/**
*

  • @author Victor Lindberg

*/
@ManagedBean(“clienteMB”)
public class ClienteMB {

private List<Cliente> listaClientes;

private Cliente clienteSelecionado;

public List<Cliente> getListaClientes() {
	//carrega a lista de clientes
	return listaClientes;
}

public void setListaClientes(List<Cliente> listaClientes) {
	this.listaClientes = listaClientes;
}

public Cliente getClienteSelecionado() {
	return clienteSelecionado;
}

public void setClienteSelecionado(Cliente clienteSelecionado) {
	this.clienteSelecionado = clienteSelecionado;
}

}[/code]

Então para usar basta definir ele como sendo o converter e colocar explicitamente um atributo chamado ‘items’ na tag selectOneMenu como abaixo.

<p:selectOneMenu id="combo" value="#{clienteMB.clienteSelecionado}" converter="selectOneUsingObjectConverter" items="#{clienteMB.listaClientes}"> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{clienteMB.listaClientes}" var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente}" /> </p:selectOneMenu>

Pronto, nossa combo do JSF ta funcionando belezinha.

É isso ai, qualquer coisa posta ae.

Victor Lindberg[/quote]

Boa !! Galera

eu estou com um erro nesta linha:

<p:selectOneMenu id="combo" value="#{cidadeBean.estadoSelecionado}" converter="selectOneUsingObjectConverter" [b]items="#{cidadeBean.listaEstados}"> [/b] O atributo items não esta definido na interface do componente <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{cidadeBean.listaEstados}" var="estado" itemLabel="#{estado.nomeEstado}" itemValue="#{estado}" /> </p:selectOneMenu>

o que será que estou errando, estou usando o prime em outras partes e nao há erros, somente nesse “items”.

Obrigadoo.

Qual o erro que esta ocorrendo?

Coloque o stacktrace e detalhe mais o problema para que possamos tentar ajudar.

Boa Galera, segue o stack trace.

java.lang.RuntimeException: Não foi possível obter a propriedade 'id' do item
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:60)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getAsString(SelectOneUsingObjectConverter.java:41)
	at org.primefaces.renderkit.InputRenderer.getOptionAsString(InputRenderer.java:140)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeOption(SelectOneMenuRenderer.java:245)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:239)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:88)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:65)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:41)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchFieldException: id
	at java.lang.Class.getDeclaredField(Class.java:1882)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:56)
	... 40 more

Então erro esta na minha pagina xhtml, no codigo do SelectOneMenu:

converter="selectOneUsingObjectConverter" items="#{cidadeBean.listaEstados}"> 

O atributo items não esta definido na interface do componente.

Obrigado pela força, to levando um baile de selectonemenu, me ajudem!!

[quote=henrique ganso]Boa Galera, segue o stack trace.

java.lang.RuntimeException: Não foi possível obter a propriedade 'id' do item
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:60)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getAsString(SelectOneUsingObjectConverter.java:41)
	at org.primefaces.renderkit.InputRenderer.getOptionAsString(InputRenderer.java:140)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeOption(SelectOneMenuRenderer.java:245)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:239)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:88)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:65)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:41)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchFieldException: id
	at java.lang.Class.getDeclaredField(Class.java:1882)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:56)
	... 40 more

Então erro esta na minha pagina xhtml, no codigo do SelectOneMenu:

converter="selectOneUsingObjectConverter" items="#{cidadeBean.listaEstados}"> 

O atributo items não esta definido na interface do componente.

Obrigado pela força, to levando um baile de selectonemenu, me ajudem!![/quote]

Cara, isso ta acontecendo pq sua classe de estados nao tem a propriedade id. O converter tenta pegar a propriedade id para identificar o item selecionado. Verifique se sua classe de estado tem a propriedade id e se tem os sets e gets.

Cole aqui sua classe de estado.

Boa Noite,
Retirei a herança que eu tinha no “id” das minhas entidades, segue minha classe estado e o stacktrace que esta gerando agora.

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


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

/**
 *
 * @author Dom
 */
@Entity
public class Estado implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)

     private Long id;
     private String nomeEstado;
     private String siglaEstado;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNomeEstado() {
        return nomeEstado;
    }

    public void setNomeEstado(String nomeEstado) {
        this.nomeEstado = nomeEstado;
    }

    public String getSiglaEstado() {
        return siglaEstado;
    }

    public void setSiglaEstado(String siglaEstado) {
        this.siglaEstado = siglaEstado;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Estado other = (Estado) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if ((this.nomeEstado == null) ? (other.nomeEstado != null) : !this.nomeEstado.equals(other.nomeEstado)) {
            return false;
        }
        if ((this.siglaEstado == null) ? (other.siglaEstado != null) : !this.siglaEstado.equals(other.siglaEstado)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 37 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 37 * hash + (this.nomeEstado != null ? this.nomeEstado.hashCode() : 0);
        hash = 37 * hash + (this.siglaEstado != null ? this.siglaEstado.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Estado{" + "id=" + id + ", nomeEstado=" + nomeEstado + ", siglaEstado=" + siglaEstado + '}';
    }
   
}

Não foi possível obter a propriedade ‘id’ do item
StackTrace

java.lang.RuntimeException: Não foi possível obter a propriedade 'id' do item
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:60)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getAsString(SelectOneUsingObjectConverter.java:41)
	at org.primefaces.renderkit.InputRenderer.getOptionAsString(InputRenderer.java:140)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeOption(SelectOneMenuRenderer.java:245)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:239)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:88)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:65)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:41)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchFieldException: id
	at java.lang.Class.getDeclaredField(Class.java:1882)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:56)
	... 40 more

Cadastro de Cidades

<?xml version="1.0" encoding="ISO-8859-1" ?>  
<f:view  xmlns:f="http://java.sun.com/jsf/core">
    
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:p="http://primefaces.org/ui">
       <ui:composition template="/templates/plataforma.xhtml">
   
       <title>WebGI - INSJC</title>
       <ui:define name="titulo">
        Cadastro de Cidades
       </ui:define>
       <ui:define name="corpo">
         <h1>Cadastro de Cidades</h1>
         <hr />
         <h:form>
            <h:messages />
            <h:panelGrid columns="2">
                <h:outputLabel value="Cidade:" for="cidade" />
                <p:inputText id="cidade" label="cidade" value="#{cidadeBean.cidade.nomeCidade}" required="true" />
                <h:outputLabel value="Estado:" for="estado" />

                <p:selectOneMenu id="combo" value="#{cidadeBean.estadoSelecionado}"     
                        converter="selectOneUsingObjectConverter" items="#{cidadeBean.listaEstados}">    
                    <f:selectItem itemLabel="Selecione" itemValue="" />      
                    <f:selectItems value="#{cidadeBean.listaEstados}" var="estado" itemLabel="#{estado.nomeEstado}" itemValue="#{estado}" />      
                </p:selectOneMenu>                                                 
                <h:outputText />
            </h:panelGrid>
            <hr/>
            <h:panelGrid columns="4">                
                <p:growl id="avisos" showDetail="true" life="3000" />
                <h:commandButton action="#{cidadeBean.insere}" value="Salvar" />         
                <hr/>
            </h:panelGrid>
            <h1>Cidades Cadastradas</h1>    

     
         </h:form>
         <p:messages id="mensagens" showDetail="true" />
         <hr />   
       </ui:define>
      </ui:composition>
 </html>
</f:view>

Cidade Bean

package br.com.webgi.bean;

import br.com.webgi.DAO.DAOGenerico;
import javax.faces.bean.*;
import br.com.webgi.entidade.Cidade;
import br.com.webgi.entidade.Estado;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

@ManagedBean(name="cidadeBean")
@RequestScoped

public class cidadeBean {
    Cidade cidade = new Cidade();
    Estado estado = new Estado();

    
    public String insere()
       {
                   
                    DAOGenerico obj_cidadeDAO = new DAOGenerico(cidade);
                    obj_cidadeDAO.insere();
                    
                    return "cadastrado";
       }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    private List<Estado> listaEstados;  
  
    private Estado estadoSelecionado;  
  
  
  
    public void setListaEstados(List<Estado> listaEstados) {  
        this.listaEstados = listaEstados;  
    }  
  
    public Estado getEstadoSelecionado() {  
        return estadoSelecionado;  
    }  
  
    public void setEstadoSelecionado(Estado estadoSelecionado) {  
        this.estadoSelecionado = estadoSelecionado;  
    }  

    public List<SelectItem> getListaEstados() {
        DAOGenerico obj_estadoDAO = new DAOGenerico(estado);
        ArrayList<SelectItem> listaEstados = new ArrayList<SelectItem>();
        List<Estado> resultado = obj_estadoDAO.find();
        for (Estado e : resultado)
            listaEstados.add(new SelectItem(e.getId(), e.getNomeEstado()));
        return listaEstados;
    }
    
 
}

Obrigado a força, sou novo em web o baile ta bonito !!

[quote=henrique ganso]Boa Noite,
Retirei a herança que eu tinha no “id” das minhas entidades, segue minha classe estado e o stacktrace que esta gerando agora.

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


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

/**
 *
 * @author Dom
 */
@Entity
public class Estado implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)

     private Long id;
     private String nomeEstado;
     private String siglaEstado;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNomeEstado() {
        return nomeEstado;
    }

    public void setNomeEstado(String nomeEstado) {
        this.nomeEstado = nomeEstado;
    }

    public String getSiglaEstado() {
        return siglaEstado;
    }

    public void setSiglaEstado(String siglaEstado) {
        this.siglaEstado = siglaEstado;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Estado other = (Estado) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if ((this.nomeEstado == null) ? (other.nomeEstado != null) : !this.nomeEstado.equals(other.nomeEstado)) {
            return false;
        }
        if ((this.siglaEstado == null) ? (other.siglaEstado != null) : !this.siglaEstado.equals(other.siglaEstado)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 37 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 37 * hash + (this.nomeEstado != null ? this.nomeEstado.hashCode() : 0);
        hash = 37 * hash + (this.siglaEstado != null ? this.siglaEstado.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Estado{" + "id=" + id + ", nomeEstado=" + nomeEstado + ", siglaEstado=" + siglaEstado + '}';
    }
   
}

Não foi possível obter a propriedade ‘id’ do item
StackTrace

java.lang.RuntimeException: Não foi possível obter a propriedade 'id' do item
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:60)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getAsString(SelectOneUsingObjectConverter.java:41)
	at org.primefaces.renderkit.InputRenderer.getOptionAsString(InputRenderer.java:140)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeOption(SelectOneMenuRenderer.java:245)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:239)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:88)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:65)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:41)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchFieldException: id
	at java.lang.Class.getDeclaredField(Class.java:1882)
	at br.com.webgi.componentes.SelectOneUsingObjectConverter.getIdByReflection(SelectOneUsingObjectConverter.java:56)
	... 40 more

Cadastro de Cidades

<?xml version="1.0" encoding="ISO-8859-1" ?>  
<f:view  xmlns:f="http://java.sun.com/jsf/core">
    
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:p="http://primefaces.org/ui">
       <ui:composition template="/templates/plataforma.xhtml">
   
       <title>WebGI - INSJC</title>
       <ui:define name="titulo">
        Cadastro de Cidades
       </ui:define>
       <ui:define name="corpo">
         <h1>Cadastro de Cidades</h1>
         <hr />
         <h:form>
            <h:messages />
            <h:panelGrid columns="2">
                <h:outputLabel value="Cidade:" for="cidade" />
                <p:inputText id="cidade" label="cidade" value="#{cidadeBean.cidade.nomeCidade}" required="true" />
                <h:outputLabel value="Estado:" for="estado" />

                <p:selectOneMenu id="combo" value="#{cidadeBean.estadoSelecionado}"     
                        converter="selectOneUsingObjectConverter" items="#{cidadeBean.listaEstados}">    
                    <f:selectItem itemLabel="Selecione" itemValue="" />      
                    <f:selectItems value="#{cidadeBean.listaEstados}" var="estado" itemLabel="#{estado.nomeEstado}" itemValue="#{estado}" />      
                </p:selectOneMenu>                                                 
                <h:outputText />
            </h:panelGrid>
            <hr/>
            <h:panelGrid columns="4">                
                <p:growl id="avisos" showDetail="true" life="3000" />
                <h:commandButton action="#{cidadeBean.insere}" value="Salvar" />         
                <hr/>
            </h:panelGrid>
            <h1>Cidades Cadastradas</h1>    

     
         </h:form>
         <p:messages id="mensagens" showDetail="true" />
         <hr />   
       </ui:define>
      </ui:composition>
 </html>
</f:view>

Cidade Bean

package br.com.webgi.bean;

import br.com.webgi.DAO.DAOGenerico;
import javax.faces.bean.*;
import br.com.webgi.entidade.Cidade;
import br.com.webgi.entidade.Estado;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

@ManagedBean(name="cidadeBean")
@RequestScoped

public class cidadeBean {
    Cidade cidade = new Cidade();
    Estado estado = new Estado();

    
    public String insere()
       {
                   
                    DAOGenerico obj_cidadeDAO = new DAOGenerico(cidade);
                    obj_cidadeDAO.insere();
                    
                    return "cadastrado";
       }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    private List<Estado> listaEstados;  
  
    private Estado estadoSelecionado;  
  
  
  
    public void setListaEstados(List<Estado> listaEstados) {  
        this.listaEstados = listaEstados;  
    }  
  
    public Estado getEstadoSelecionado() {  
        return estadoSelecionado;  
    }  
  
    public void setEstadoSelecionado(Estado estadoSelecionado) {  
        this.estadoSelecionado = estadoSelecionado;  
    }  

    public List<SelectItem> getListaEstados() {
        DAOGenerico obj_estadoDAO = new DAOGenerico(estado);
        ArrayList<SelectItem> listaEstados = new ArrayList<SelectItem>();
        List<Estado> resultado = obj_estadoDAO.find();
        for (Estado e : resultado)
            listaEstados.add(new SelectItem(e.getId(), e.getNomeEstado()));
        return listaEstados;
    }
    
 
}

Obrigado a força, sou novo em web o baile ta bonito !![/quote]

O problema está ocorrendo pq vc ta retornando a lista de estados no seu método getListaEstados no managedbean como sendo uma lista de SelectItem. Então o converter SelectOneUsingObjectConverter vai tentar pegar a propriedade id de cada item, como vc ta usando SelectItem, ele não encontra a propriedade id, pois SelectItem não tem uma propriedade id. Se você observar o exemplo de uso que coloquei no inicio do post, veja no método do meu managedbean que retorna os items. Eu uso uma lista do proprio objeto e nao de selectitem. Você nao precisa e nem é pra usar SelectItem. Devolva simplesmente a lista de estados e o converter vai fazer o “meio de campo” pra vc. Então mude o seu método getListaEstados para como abaixo:

public List<Estado> getListaEstados() { DAOGenerico obj_estadoDAO = new DAOGenerico(estado); return obj_estadoDAO.find(); }

O correto é você devolver a lista de objetos Estado e não de SelectItem. Por você estar devolvendo SelectItem e não estado é que o converter tava tentando pegar ‘id’ e não tava encontrando. Agora devolvendo ‘estado’ o converter vai encontrar sem problemas a propriedade id.

Espero que tenha resolvido seu problema.

Abraço.

Boa Noite,

Então realizei as correções, agora quando salvo uma cidade o sistema esta salvando apenas o nome da cidade na tabela cidade, o estado não. O que será que pode ser?

Amigos… estou tentando a dias já fazer uma consulta, pegando como parametro um item de um combobox… porém, sem sucesso!
Rodando o debug, percebi que não estava conseguindo pegar o item do combobox, sempre chegava nulo… pesquisando um pouco encontrei este post…

tentei seguir a solução que lindberg713 apresentou, porém está dando erro java.lang.NullPointerException ao renderizar a tela, na linha

@Override  
public String getAsString(FacesContext context, UIComponent component, Object value) {  
      if (value == null)  
          return "";  
         
      //AQUIII
     return getIdByReflection(value).toString();  
}

não tenho muita experiencia ainda com JavaWeb… e nao estou conseguindo “enxergar” qual é o erro que estou cometendo… se alguem puder me dar uma força, agradeço desde já!

O converter, a unica coisa que mudei foi o atributo “id” para “id_datasetini”, e o tipo Long para Integer…

@FacesConverter("diretorioConverter")  
public class DiretorioConverter implements Converter{  
      
    @Override  
    public Object getAsObject(FacesContext context, UIComponent component, String value) {  
        if (value == null || value.equals(""))  
            return null;  
  
        try{  
            Integer id = Integer.valueOf(value);  
            Collection items =  (Collection) component.getAttributes().get("items");  
            return findById(items, id);  
        }catch(Exception ex){  
            throw new ConverterException("Não foi possível aplicar conversão de item com valor ["+value+"] no componente ["+component.getId()+"]", ex);  
        }  
    }  
      
    @Override  
    public String getAsString(FacesContext context, UIComponent component, Object value) {  
        if (value == null)  
            return "";  
          
        return getIdByReflection(value).toString();  
    }  
      
    private Object findById(Collection collection, Integer idToFind){  
        for (Object obj : collection){  
             Integer id = getIdByReflection(obj);  
             if (id == idToFind)  
                 return obj;  
        }  
          
        return null;  
    }  
      
    private Integer getIdByReflection(Object bean){  
        try{  
            Field idField = bean.getClass().getDeclaredField("id_datasetini");  
            idField.setAccessible(true);  
            return (Integer) idField.get(bean);  
        }catch(Exception ex){  
            throw new RuntimeException("Não foi possível obter a propriedade 'id' do item",ex);  
        }  
    }  
  
}

O erro

21:52:59,346 Grave [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-9090-1) Error Rendering View[/astronomia/consulta.xhtml]: java.lang.NullPointerException
	at astronomia.converter.DiretorioConverter.getAsString(DiretorioConverter.java:61) [classes:]
	at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:74) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeLabel(SelectOneMenuRenderer.java:120) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:89) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62) [primefaces-3.2.jar:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:57) [primefaces-3.2.jar:]
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:185) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:108) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55) [primefaces-3.2.jar:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) [primefaces-3.2.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]

21:52:59,354 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/Astrono].[Faces Servlet]] (http-localhost-127.0.0.1-9090-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
	at astronomia.converter.DiretorioConverter.getAsString(DiretorioConverter.java:61) [classes:]
	at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:74) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeLabel(SelectOneMenuRenderer.java:120) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:89) [primefaces-3.2.jar:]
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62) [primefaces-3.2.jar:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:57) [primefaces-3.2.jar:]
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:185) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:108) [primefaces-3.2.jar:]
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55) [primefaces-3.2.jar:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) [primefaces-3.2.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]

Obrigado desde já!!

Estou com o mesmo problema…

Nova Requisição
</ui:define>
	<ui:define name="corpo">
		<h:form id="cadastro">
			<h:messages />
			<br/>	
				<fieldset><legend>Requisição</legend>
				<h:panelGrid columns="3">
				<h:outputText value="Item:"/>  
        		<h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produtoSelecionado}" converter="itemConverter" items="#{itemBean.itens}">
 				<f:selectItem itemLabel="Selecione" itemValue=""/>  
 				<f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/>
				</h:selectOneMenu>	

@FacesConverter(value = "itemConverter")

public class ItemConverter implements Converter {

	  @Override  
	    public Object getAsObject(FacesContext context,  
	        UIComponent component, String value) {  
	        if (value == null || value.equals(""))  
	            return null;  
	  
	        try{  
	            Long id = Long.valueOf(value);  
	            Collection items =  (Collection) component.getAttributes().get("items");  
	            return findById(items, id);  
	        }catch(Exception ex){  
	            throw new ConverterException("Não foi possível aplicar conversão de item com valor ["+value+"] no componente ["+component.getId()+"]", ex);  
	        }  
	    }  
	      
	    @Override  
	    public String getAsString(FacesContext context, UIComponent component,  
	            Object value) {  
	        if (value == null)  
	            return "";  
	          
	        return getIdByReflection(value).toString();  
	    }  
	      
	    private Object findById(Collection collection, Long idToFind){  
	        for (Object obj : collection){  
	             Long id = getIdByReflection(obj);  
	             if (id == idToFind)  
	                 return obj;  
	        }  
	          
	        return null;  
	    }  
	      
	    private Long getIdByReflection(Object bean){  
	        try{  
	            Field idField = bean.getClass().getDeclaredField("id");  
	            idField.setAccessible(true);  
	            return (Long) idField.get(bean);  
	        }catch(Exception ex){  
	            throw new RuntimeException("Não foi possível obter a propriedade 'id' do item",ex);  
	        }  
	    }  
	  
	}  
@Entity  
public class Produto implements   Serializable{
	
	private static final long serialVersionUID = -2477528265610024554L;
	@Id  
    @GeneratedValue(strategy= GenerationType.AUTO)
	
	private Long id;  
	public Item objetoItem;	
	public int quantidadeItem;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Item getObjetoItem() {
		return objetoItem;
	}
	public void setObjetoItem(Item objetoItem) {
		this.objetoItem = objetoItem;
	}
	public int getQuantidadeItem() {
		return quantidadeItem;
	}
	public void setQuantidadeItem(int quantidadeItem) {
		this.quantidadeItem = quantidadeItem;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result
				+ ((objetoItem == null) ? 0 : objetoItem.hashCode());
		result = prime * result + quantidadeItem;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Produto other = (Produto) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (objetoItem == null) {
			if (other.objetoItem != null)
				return false;
		} else if (!objetoItem.equals(other.objetoItem))
			return false;
		if (quantidadeItem != other.quantidadeItem)
			return false;
		return true;
	}
    
	
	
	
}
		
public class CarrinhoBean {
	
	
	private Produto produto = new Produto();
	ItemBean itemBean = new ItemBean();	
	
	private String car;
	private Produto produtoSelecionado;
	
	public List<Produto> lista = new ArrayList<Produto>();  
	public ArrayList<String> carrinhoSessao = new ArrayList<String>();

	
    public String insere() {  
    	Produto produto = new Produto();
    	produto.setObjetoItem(getProduto().getObjetoItem());
    	produto.setQuantidadeItem(getProduto().getQuantidadeItem());
    	
    	lista.add(produto);
		return null;
	 }  
    
  
    public String remove(Produto produto) {  
    	
    	lista.remove(produto);
    	return null;  
    }
    
    public List<Produto> getLista() {
	  return lista;
    }
    	 
	public Produto getProduto() {
		return produto;
	}

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

	public Produto getProdutoSelecionado() {
		return produtoSelecionado;
	}

	public void setProdutoSelecionado(Produto produtoSelecionado) {
		this.produtoSelecionado = produtoSelecionado;
	}

}

O q fiz de errado ?

Abracos

Olá amigo, tenta essa solução que depois de um tempo apanhando consegui fazer. Funciona certinho e é bem mais simples do que imagina :wink:

http://www.guj.com.br/java/279916-resolvido-pegar-item-de-um-componente-combobox-listbox-e-usar-como-parametro-para-consulta/2#1478743

Abraços.

Ola lindberg713 , onde é que eu devo colocar este atributo id?