[Resolvido] Duvida ArrayList!

Pessoal

Eh o seguinte: Eu tenho esse selectOneMenu aqui:

<h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produto.objetoItem}">
 				<f:selectItem itemLabel="Selecione" itemValue=""/>  
 				<f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/>
				</h:selectOneMenu>	

from Item i where i.ativo=true order by i.nome asc

Eu preciso add nesse arrayList public List<Produto> lista = new ArrayList<Produto>(); Esse objeto item…

Minha classe produto tem 2 atributos:

objetoItem --> Tipo Item
quantidadeItem–> Tipo int

Eh possivel fazer isso ?

No selectOneMenu eu preciso mostrar apenas o nome do item… Qnd eu for listar o arrayList eu tb so preciso mostrar apenas o nome do item.

[]'s

Na sua descrição só consegui identificar uma dúvida. Então lá vai a resposta:

É possível sim.

[quote=Rodrigo Sasaki]Na sua descrição só consegui identificar uma dúvida. Então lá vai a resposta:

É possível sim.[/quote]

Qual foi a duvida q vc identificou ?

Q bom… Entao, estou tentando fazer isso e estou com um problema…

Tenho essa pagina aqui:

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

E a classe q add, remove e lista




@ManagedBean(name="carrinhoBean")
@SessionScoped

public class CarrinhoBean {
	
	
	private Produto produto = new Produto();
	ItemBean itemBean = new ItemBean();	
	
	private String car;

	
	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;
	}


}

Qnd eu tento adicionar no arrayList (lista) aparece o seguinte erro:

Erro de conversão ao definir o valor ‘requisicao.item.Item@7526ca33’ para ‘null Converter’.

Eu to listando so o nome no selectOneMenu -> itemLabel="#{itens.nome}" ! E desse jeito mesmo q eu quero…

O q fazer com esse erro ?

Ah sim, no caso você teria que implementar um Converter para sua entidade. Já fez isso antes?

Aqui tem algumas dicas: http://www.rponte.com.br/tag/entity-converter/

[quote=Rodrigo Sasaki]Ah sim, no caso você teria que implementar um Converter para sua entidade. Já fez isso antes?

Aqui tem algumas dicas: http://www.rponte.com.br/tag/entity-converter/[/quote]

Nunca fiz isso antes !

To dando uma olhada no converter… To vendo aqui como implementar p o meu caso :slight_smile:

Qualquer problema eu posto aqui, de qualquer forma, muito obrigado :slight_smile:

Entao, tentei implementar e ocorreu um erro… To fazendo algo errado…

requisicao.item.Item cannot be cast to requisicao.util.BaseEntity

java.lang.ClassCastException: requisicao.item.Item cannot be cast to requisicao.util.BaseEntity
at requisicao.item.ItemConverter.getAsString(ItemConverter.java:34)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:515)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:530)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:788)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:840)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:294)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:308)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:181)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:125)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
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:927)
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:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
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:662)


public class Produto implements BaseEntity,  Serializable{

	private static final long serialVersionUID = -2477528265610024554L;
	
	private Integer codigo;  
	public Item objetoItem;	
	public int quantidadeItem;

	
        public Long getId() {  
            return new Long(codigo);  
    }

//get e set
//hashCode() e equals
package requisicao.util;

public interface BaseEntity {
	
	 public Long getId();  


}
	private Produto produto = new Produto();
	ItemBean itemBean = new ItemBean();	
	
	private String car;
	private Produto selectedProduto;
	
	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 void setSelectedProduto(Produto selectedProduto) {  
        this.selectedProduto = selectedProduto;  
        System.out.println("Empresa selecionada: " + selectedProduto.getObjetoItem().getNome());  
    }  


    
    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 class ItemConverter implements Converter {

	
	   public Object getAsObject(FacesContext ctx, UIComponent component, String value) {  
        if (value != null) {  
            return this.getAttributesFrom(component).get(value);  
        }  
        return null;  
    }  
  
    public String getAsString(FacesContext ctx, UIComponent component, Object value) {  
  
        if (value != null  
                && !"".equals(value)) {  
  
            BaseEntity entity = (BaseEntity) value;  
  
            // adiciona item como atributo do componente  
            this.addAttribute(component, entity);  
  
            Long codigo = entity.getId();  
            if (codigo != null) {  
                return String.valueOf(codigo);  
            }  
        }  
  
        return (String) value;  
    }  
  
    protected void addAttribute(UIComponent component, BaseEntity o) {  
        String key = o.getId().toString(); // codigo da empresa como chave neste caso  
        this.getAttributesFrom(component).put(key, o);  
    }  
  
    protected Map<String, Object> getAttributesFrom(UIComponent component) {  
        return component.getAttributes();  
    }  
  
}
...
<fieldset><legend>Requisição</legend>
				<h:panelGrid columns="3">
				<h:outputText value="Item:"/>  
        		<h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produto.objetoItem}" converter="itemConverter">
 				<f:selectItem itemLabel="Selecione" itemValue=""/>  
 				<f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/>
				</h:selectOneMenu>	

...

Você tem que dar uma olhada no seu getAsString onde você faz o cast, que tipo de objeto está ali nessa hora?

Entao, peguei outro exemplo e modifiquei… Achei esse exemplo melhor

http://www.guj.com.br/java/257236-jsf-20---como-pegar-objeto-inteiro-no-selectonemenu/2

Vou colocar aqui as modificacoes e o erro

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);  
        }  
    }  
  
}  
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>      
@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;  
    }  
  
}  

Esse eh o erro:
N�o foi poss�vel obter a propriedade ‘id’ do item

java.lang.RuntimeException: N�o foi poss�vel obter a propriedade ‘id’ do item
at requisicao.item.ItemConverter.getIdByReflection(ItemConverter.java:63)
at requisicao.item.ItemConverter.getAsString(ItemConverter.java:44)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:515)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:530)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:788)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:840)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:294)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:308)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:181)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:125)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
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:927)
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:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
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:662)
Caused by: java.lang.NoSuchFieldException: id
at java.lang.Class.getDeclaredField(Class.java:1882)
at requisicao.item.ItemConverter.getIdByReflection(ItemConverter.java:59)
… 67 more

Acho q tem algo errado na pagina jsf

Amigo faz assim:

cria essa classe aki o :

EntityConverter.java[code]
import java.lang.reflect.Field;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.persistence.Id;

@FacesConverter(value=“entityConverter”)
public class EntityConverter implements Converter {

@Override
public Object getAsObject(FacesContext ctx, UIComponent component,
		String value) {
	if (value != null) {
		return component.getAttributes().get(value);
	}
	return null;
}

@Override
public String getAsString(FacesContext ctx, UIComponent component,
		Object obj) {
	if (obj != null && !"".equals(obj)) {
		String id;
		try {
			id = this.getId(getClazz(ctx, component), obj);
			if (id == null) {
				id = "";
			}
			id = id.trim();
			component.getAttributes().put(id,
					getClazz(ctx, component).cast(obj));
			return id;
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}
	}
	return null;
}

private Class<?> getClazz(FacesContext facesContext, UIComponent component) {
	return component.getValueExpression("value").getType(
			facesContext.getELContext());
}

public String getId(Class<?> clazz, Object obj) throws SecurityException,
		NoSuchFieldException, IllegalArgumentException,
		IllegalAccessException {
	for (Field field : clazz.getDeclaredFields()) {
		if ((field.getAnnotation(Id.class)) != null) {
			Field privateField = clazz.getDeclaredField(field.getName());
			privateField.setAccessible(true);
			if (privateField.get(clazz.cast(obj)) != null) {
				return (String) field.getType()
						.cast(privateField.get(clazz.cast(obj))).toString();
			} else {
				return null;
			}
		}
	}
	return null;
}

}
[/code]

e um converter generico, serve para varios objetos.

depois la no selectOneMenu você chama ele atraves do converter=“entityConverter”

[code]<p:selectOneMenu id=“empresaOneMenu” value="#{omissaoBean.empresa}“
required=“true” converter=“entityConverter"
requiredMessage=“Selecione uma Empresa.”>
<f:selectItem itemLabel=“Selecione” noSelectionOption=“false” />
<f:selectItems value=”#{omissaoBean.listaEmpresa}” var=“empresa"
itemLabel=”#{empresa.nome_empresa}" itemValue="#{empresa}" />
<p:ajax event=“change” listener="#{omissaoBean.preencheOneMenu}“
update=”:cadastroOmissao:linhaOneMenu,oneMenuVeiculo" />
</p:selectOneMenu>

[/code]

[quote=eduardimaa]Amigo faz assim:

cria essa classe aki o :

EntityConverter.java[code]
import java.lang.reflect.Field;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.persistence.Id;

@FacesConverter(value=“entityConverter”)
public class EntityConverter implements Converter {

@Override
public Object getAsObject(FacesContext ctx, UIComponent component,
		String value) {
	if (value != null) {
		return component.getAttributes().get(value);
	}
	return null;
}

@Override
public String getAsString(FacesContext ctx, UIComponent component,
		Object obj) {
	if (obj != null && !"".equals(obj)) {
		String id;
		try {
			id = this.getId(getClazz(ctx, component), obj);
			if (id == null) {
				id = "";
			}
			id = id.trim();
			component.getAttributes().put(id,
					getClazz(ctx, component).cast(obj));
			return id;
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}
	}
	return null;
}

private Class<?> getClazz(FacesContext facesContext, UIComponent component) {
	return component.getValueExpression("value").getType(
			facesContext.getELContext());
}

public String getId(Class<?> clazz, Object obj) throws SecurityException,
		NoSuchFieldException, IllegalArgumentException,
		IllegalAccessException {
	for (Field field : clazz.getDeclaredFields()) {
		if ((field.getAnnotation(Id.class)) != null) {
			Field privateField = clazz.getDeclaredField(field.getName());
			privateField.setAccessible(true);
			if (privateField.get(clazz.cast(obj)) != null) {
				return (String) field.getType()
						.cast(privateField.get(clazz.cast(obj))).toString();
			} else {
				return null;
			}
		}
	}
	return null;
}

}
[/code]

e um converter generico, serve para varios objetos.

depois la no selectOneMenu você chama ele atraves do converter=“entityConverter”

[code]<p:selectOneMenu id=“empresaOneMenu” value="#{omissaoBean.empresa}“
required=“true” converter=“entityConverter"
requiredMessage=“Selecione uma Empresa.”>
<f:selectItem itemLabel=“Selecione” noSelectionOption=“false” />
<f:selectItems value=”#{omissaoBean.listaEmpresa}” var=“empresa"
itemLabel=”#{empresa.nome_empresa}" itemValue="#{empresa}" />
<p:ajax event=“change” listener="#{omissaoBean.preencheOneMenu}“
update=”:cadastroOmissao:linhaOneMenu,oneMenuVeiculo" />
</p:selectOneMenu>

[/code][/quote]

Entao, utilizei esse converter ele ta funcionando parcialmente… so q o nome do item ta aparecendo desse jeito:

requisicao.item.Item@7526ca33

Na verdade, eh o objeto item ai… Teria q mostrar o nome do item… Tenho q fazer alguma modificacao no converter…

@FacesConverter(value = "itemConverter")

public class ItemConverter implements Converter {

	 @Override  
	    public Object getAsObject(FacesContext ctx, UIComponent component,  
	            String value) {  
	        if (value != null) {  
	            return component.getAttributes().get(value);  
	        }  
	        return null;  
	    }  
	  
	    @Override  
	    public String getAsString(FacesContext ctx, UIComponent component,  
	            Object obj) {  
	        if (obj != null && !"".equals(obj)) {  
	            String id;  
	            try {  
	                id = this.getId(getClazz(ctx, component), obj);  
	                if (id == null) {  
	                    id = "";  
	                }  
	                id = id.trim();  
	                component.getAttributes().put(id,  
	                        getClazz(ctx, component).cast(obj));  
	                return id;  
	            } catch (SecurityException e) {  
	                e.printStackTrace();  
	            } catch (IllegalArgumentException e) {  
	                e.printStackTrace();  
	            } catch (NoSuchFieldException e) {  
	                e.printStackTrace();  
	            } catch (IllegalAccessException e) {  
	                e.printStackTrace();  
	            } catch (ClassCastException e) {  
	                e.printStackTrace();  
	            }  
	        }  
	        return null;  
	    }  
	  
	    private Class<?> getClazz(FacesContext facesContext, UIComponent component) {  
	        return component.getValueExpression("value").getType(  
	                facesContext.getELContext());  
	    }  
	  
	    public String getId(Class<?> clazz, Object obj) throws SecurityException,  
	            NoSuchFieldException, IllegalArgumentException,  
	            IllegalAccessException {  
	        for (Field field : clazz.getDeclaredFields()) {  
	            if ((field.getAnnotation(Id.class)) != null) {  
	                Field privateField = clazz.getDeclaredField(field.getName());  
	                privateField.setAccessible(true);  
	                if (privateField.get(clazz.cast(obj)) != null) {  
	                    return (String) field.getType()  
	                            .cast(privateField.get(clazz.cast(obj))).toString();  
	                } else {  
	                    return null;  
	                }  
	            }  
	        }  
	        return null;  
	    }  
	}  
	<br/>	
				<fieldset><legend>Requisição</legend>
				<h:panelGrid columns="3">
				<h:outputText value="Item:"/>  
        		<h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produto.objetoItem}" converter="itemConverter" items="#{itemBean.itens}">
 				<f:selectItem itemLabel="Selecione" itemValue=""/>  
 				<f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens.nome}"/>
				</h:selectOneMenu>	

[quote=tiago__][quote=eduardimaa]Amigo faz assim:

cria essa classe aki o :

EntityConverter.java[code]
import java.lang.reflect.Field;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.persistence.Id;

@FacesConverter(value=“entityConverter”)
public class EntityConverter implements Converter {

@Override
public Object getAsObject(FacesContext ctx, UIComponent component,
		String value) {
	if (value != null) {
		return component.getAttributes().get(value);
	}
	return null;
}

@Override
public String getAsString(FacesContext ctx, UIComponent component,
		Object obj) {
	if (obj != null && !"".equals(obj)) {
		String id;
		try {
			id = this.getId(getClazz(ctx, component), obj);
			if (id == null) {
				id = "";
			}
			id = id.trim();
			component.getAttributes().put(id,
					getClazz(ctx, component).cast(obj));
			return id;
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}
	}
	return null;
}

private Class<?> getClazz(FacesContext facesContext, UIComponent component) {
	return component.getValueExpression("value").getType(
			facesContext.getELContext());
}

public String getId(Class<?> clazz, Object obj) throws SecurityException,
		NoSuchFieldException, IllegalArgumentException,
		IllegalAccessException {
	for (Field field : clazz.getDeclaredFields()) {
		if ((field.getAnnotation(Id.class)) != null) {
			Field privateField = clazz.getDeclaredField(field.getName());
			privateField.setAccessible(true);
			if (privateField.get(clazz.cast(obj)) != null) {
				return (String) field.getType()
						.cast(privateField.get(clazz.cast(obj))).toString();
			} else {
				return null;
			}
		}
	}
	return null;
}

}
[/code]

e um converter generico, serve para varios objetos.

depois la no selectOneMenu você chama ele atraves do converter=“entityConverter”

[code]<p:selectOneMenu id=“empresaOneMenu” value="#{omissaoBean.empresa}“
required=“true” converter=“entityConverter"
requiredMessage=“Selecione uma Empresa.”>
<f:selectItem itemLabel=“Selecione” noSelectionOption=“false” />
<f:selectItems value=”#{omissaoBean.listaEmpresa}” var=“empresa"
itemLabel=”#{empresa.nome_empresa}" itemValue="#{empresa}" />
<p:ajax event=“change” listener="#{omissaoBean.preencheOneMenu}“
update=”:cadastroOmissao:linhaOneMenu,oneMenuVeiculo" />
</p:selectOneMenu>

[/code][/quote]

Entao, utilizei esse converter ele ta funcionando parcialmente… so q o nome do item ta aparecendo desse jeito:

requisicao.item.Item@7526ca33

Na verdade, eh o objeto item ai… Teria q mostrar o nome do item… Tenho q fazer alguma modificacao no converter…

@FacesConverter(value = "itemConverter")

public class ItemConverter implements Converter {

	 @Override  
	    public Object getAsObject(FacesContext ctx, UIComponent component,  
	            String value) {  
	        if (value != null) {  
	            return component.getAttributes().get(value);  
	        }  
	        return null;  
	    }  
	  
	    @Override  
	    public String getAsString(FacesContext ctx, UIComponent component,  
	            Object obj) {  
	        if (obj != null && !"".equals(obj)) {  
	            String id;  
	            try {  
	                id = this.getId(getClazz(ctx, component), obj);  
	                if (id == null) {  
	                    id = "";  
	                }  
	                id = id.trim();  
	                component.getAttributes().put(id,  
	                        getClazz(ctx, component).cast(obj));  
	                return id;  
	            } catch (SecurityException e) {  
	                e.printStackTrace();  
	            } catch (IllegalArgumentException e) {  
	                e.printStackTrace();  
	            } catch (NoSuchFieldException e) {  
	                e.printStackTrace();  
	            } catch (IllegalAccessException e) {  
	                e.printStackTrace();  
	            } catch (ClassCastException e) {  
	                e.printStackTrace();  
	            }  
	        }  
	        return null;  
	    }  
	  
	    private Class<?> getClazz(FacesContext facesContext, UIComponent component) {  
	        return component.getValueExpression("value").getType(  
	                facesContext.getELContext());  
	    }  
	  
	    public String getId(Class<?> clazz, Object obj) throws SecurityException,  
	            NoSuchFieldException, IllegalArgumentException,  
	            IllegalAccessException {  
	        for (Field field : clazz.getDeclaredFields()) {  
	            if ((field.getAnnotation(Id.class)) != null) {  
	                Field privateField = clazz.getDeclaredField(field.getName());  
	                privateField.setAccessible(true);  
	                if (privateField.get(clazz.cast(obj)) != null) {  
	                    return (String) field.getType()  
	                            .cast(privateField.get(clazz.cast(obj))).toString();  
	                } else {  
	                    return null;  
	                }  
	            }  
	        }  
	        return null;  
	    }  
	}  

<br/> <fieldset><legend>Requisição</legend> <h:panelGrid columns="3"> <h:outputText value="Item:"/> <h:selectOneMenu id="itemSelecionado" value="#{carrinhoBean.produto.objetoItem}" converter="itemConverter" items="#{itemBean.itens}"> <f:selectItem itemLabel="Selecione" itemValue=""/> <f:selectItems value="#{itemBean.itens}" var ="itens" itemValue="#{itens}" itemLabel="#{itens.nome}"/> </h:selectOneMenu> [/quote]

Resolvido…

So foi adicionar .nome no atributo objetoItem… Muito obrigado a todos pela ajuda.

  <f:facet name="header">Nome do Item</f:facet>  
                  <h:outputText value="#{car.objetoItem.nome}" />