[Resolvido]Problema com AutoComplete do Primefaces

Olá, estou iniciando com JSF + Primefaces e estou com um problema no AutoComplete.

package com.converter;
 
import javax.faces.application.FacesMessage;  
  
import javax.faces.component.UIComponent;  
import javax.faces.context.FacesContext;  
import javax.faces.convert.Converter;  
import javax.faces.convert.ConverterException; 


//import com.facade.ClienteFacade;
import com.facade.ClienteFacadeImp;
import com.model.Cliente;

public class ClienteConverter implements Converter {
	
	@Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		
        ClienteFacadeImp clienteFacade = new ClienteFacadeImp();
        int clienteId;
 
        try {
            clienteId = Integer.parseInt(arg2);
        } catch (NumberFormatException exception) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Type the name of a Cliente and select it (or use the dropdow)", "Type the name of a Cliente and select it (or use the dropdow)"));
        }
 
        return clienteFacade.find(clienteId);
    }
	
	@Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
 
        if (arg2 == null) {
            return "";
        }
        Cliente cliente = (Cliente) arg2;
        return String.valueOf(cliente.getId());
    } 
	
}
package com.mb;
 
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.event.ActionEvent;

import com.facade.ClienteFacade;
import com.facade.ClienteFacadeImp;
import com.model.Cliente;
 
@ManagedBean
@SessionScoped
public class ClienteMB extends AbstractMB{	
	
    @EJB
    private ClienteFacade clienteFacade;
    
    private boolean addNovoRegistro;
    private List<Cliente> filteredClientes; 
    
    private Cliente cliente;
    private List<Cliente> allClientes;
    
    public Cliente getCliente() {
 
        if(cliente == null){
            cliente = new Cliente();
        }
 
        return cliente;
    }
 
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
 
    public List<Cliente> getAllClientes() {
        return clienteFacade.findAll();
    }
    
    public List<Cliente> getFilteredClientes() {  
        return filteredClientes;  
    }  
  
    public void setFilteredClientes(List<Cliente> filteredClientes) {  
        this.filteredClientes = filteredClientes;  
    } 
       
    public void salvar(ActionEvent Evento) throws Exception{
    	if (addNovoRegistro){
    		try {          	
            	try {
                	clienteFacade.save(cliente);            	
                } catch (EJBException e) {
                    displayErrorMessageToUser("Erro ao salvar o Cliente");                
                }	
            	displayInfoMessageToUser("Operação Concluída: Inclusão");
            	
            }
            
            finally
            {
                atualizaList();
                resetCliente();
            }
    	}else{
	    	try { 
		    	try {        	
		            clienteFacade.update(cliente);
		        } catch (EJBException e) {
		            displayErrorMessageToUser("Erro ao efetuar alteração. Verifique os dados de cliente");	            
		        }
		    	displayInfoMessageToUser("Operação Concluída: Alteração");
	    	}	
	        finally
	        {
	            atualizaList();
	            resetCliente();
	        }
    	}	
    }
    
    public void deleteClienteEnd(ActionEvent Evento)throws Exception{
    	 try{
    		 try {
    	        	clienteFacade.delete(cliente);        	
    	        } catch (EJBException e) {        	
    	            displayErrorMessageToUser("Erro ao efetuar alteração. Verifique os dados de cliente");        
    	        }
    	        displayInfoMessageToUser("Operação Concluída: Exclusão");
         }
         finally
         {
             atualizaList();
             resetCliente();
         }
    }
    
    public boolean isAddNovoRegistro(){
    	return addNovoRegistro;
    }
    
    public void setAddNovoRegistro(boolean addNovoRegistro){
    	this.addNovoRegistro = addNovoRegistro;
    }
      
    private void atualizaList() throws Exception
    {
    	clienteFacade.findAll();
    }
    public void resetCliente() {
		cliente = new Cliente();
	}
    public List<Cliente> complete(String query){
    	List<Cliente> queryResult = new ArrayList<Cliente>();
    	
    	if (allClientes == null){    		
    		clienteFacade = new ClienteFacadeImp();
    		allClientes = clienteFacade.findAll();
    	}
    	
    	for(Cliente cliente : allClientes){    		
	    	if(cliente.getRazaoSocial().toLowerCase().contains(query.toLowerCase())){
	    		queryResult.add(cliente);	    		
	    	}
    	}	
    return queryResult;	
    }    
}

xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
<h:body>
	<p:dialog id="dialog" header="Contrato" widgetVar="dialogContrato"
                              appendToBody="true" resizable="false" closable="false"
                              modal="true" showEffect="fade" hideEffect="fade" width="700">            
                     
             <h:form id="frmContratoModal">
                  
                   <h:panelGrid id="infosContrato" columns="3" style="margin-bottom:10px">
                           
                           
                           <h:inputHidden id="Id" value="#{contratoMB.contrato.id}" />                                    
							<p:outputLabel for="NumeroContrato" value="Numero Contrato:" />
                           <p:inputText id="NumeroContrato" value="#{contratoMB.contrato.numeroContrato}"
                                        required="true" requiredMessage="Numero inválido" size="35" disabled="true">
                           </p:inputText>                
                           <p:message for="NumeroContrato" display="text"  />
                           
                           <p:outputLabel for="TipoPagamento" value="Tipo Pagamento:" />
                           <p:selectOneMenu id="TipoPagamento" value="#{contratoMB.contrato.tipoPagamento}" 
                           				 required="true" requiredMessage="Tipo Pagamento inválido" size="35" >
                           	 <f:selectItem itemLabel="Mensal" itemValue="Mensal"/>
                           	 <f:selectItem itemLabel="Anual" itemValue="Anual"/>
                           	 <f:selectItem itemLabel="Valor Unico" itemValue="Valor Unico"/>
                           </p:selectOneMenu>
                           <p:message for="TipoPagamento" display="text"/>
                           
							<p:outputLabel for="RazaoSocial" value="Razão Social:" />
							<p:inputText id="RazaoSocial" value="#{clienteMB.cliente.razaoSocial}"
                                        required="true" requiredMessage="Razão Social Inválida" size="35">
                           </p:inputText>
                           <p:autoComplete forceSelection="true" minQueryLength="3" value="#{clienteMB.cliente}" 
                           	var="cliente" itemLabel="#{cliente.razaoSocial}" itemValue="#{cliente.id}" completeMethod="#{clienteMB.complete}" 
                           	label="Razao Social" required="true" dropdown="true"  />
                           <p:message for="RazaoSocial" display="text"/>                                                            
                           <h:inputHidden value="#{clienteMB.addNovoRegistro}" /> 
                		     </h:panelGrid>
                        
                		     <p:separator />
                      
                		     <p:commandButton value="Salvar" icon="ui-icon-disk" title="Salvar"
                                      actionListener="#{contratoMB.salvar}"
                                      update="infosContrato,:frmTblContrato,:frmMsgErro"
                                      oncomplete="handleRequest(xhr, status, args);"/>                                                                            
                     <script type="text/javascript"> 
                         function handleRequest(xhr, status, args)
                         { 
                             if (!args.validationFailed)
                             {                                           
                                 dialogCliente.hide(); 
                             }
                             else
                                 {
                                     jQuery('#dialog').effect("shake", { times:3 }, 100);                                             
                                 }
                         }           
                   </script>                                 
                    
                   <p:commandButton value="Cancelar" title="Cancelar"
                                    immediate="true" oncomplete="dialogContrato.hide();"
                                    icon="ui-icon-close" />
             </h:form> 
        </p:dialog>       
</h:body>
</html>

E o Erro:

23:30:20,046 AVISO [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-8080-3) /paginas/protegidas/dialogs/dialogContrato.xhtml @39,85 completeMethod="#{clienteMB.complete}": java.lang.NullPointerException: javax.el.ELException: /paginas/protegidas/dialogs/dialogContrato.xhtml @39,85 completeMethod="#{clienteMB.complete}": java.lang.NullPointerException
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at org.primefaces.component.autocomplete.AutoComplete.broadcast(AutoComplete.java:358) [primefaces-3.4.2.jar:]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:935) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:626) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_37]
Caused by: java.lang.NullPointerException
	at com.facade.ClienteFacadeImp.findAll(ClienteFacadeImp.java:45) [AROEJB.jar:]
	at com.mb.ClienteMB.complete(ClienteMB.java:124) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_37]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_37]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_37]
	at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.6.0_37]
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262) [jbossweb-7.0.13.Final.jar:]
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) [jbossweb-7.0.13.Final.jar:]
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.7-jbossorg-2.jar:]
	... 22 more

Desde já agradeço qualquer auxílio.

uai, quando fui olhar vc resolveu? :open_mouth:

Oq era? [=

Eu estava declarando novamente o ClienteFacade dentro do complete e aí ele ficava como Null.
Depois deu erro pois estava passando no value o cliente.Id e deveria passar apenas o cliente.
Agora está carregando certinho.
Falta fazer salvar :wink:
Mas vou continuar amanha…
Por hoje é isto, muito obrigado Hebert. :smiley:

[quote=Leandro Pereira]Eu estava declarando novamente o ClienteFacade dentro do complete e aí ele ficava como Null.
Depois deu erro pois estava passando no value o cliente.Id e deveria passar apenas o cliente.
Agora está carregando certinho.
Falta fazer salvar :wink:
Mas vou continuar amanha…
Por hoje é isto, muito obrigado Hebert. :smiley: [/quote]Eu não fiz nada.

Você é capaz! Go go go! :twisted:

[quote=Hebert Coelho][quote=Leandro Pereira]Eu estava declarando novamente o ClienteFacade dentro do complete e aí ele ficava como Null.
Depois deu erro pois estava passando no value o cliente.Id e deveria passar apenas o cliente.
Agora está carregando certinho.
Falta fazer salvar :wink:
Mas vou continuar amanha…
Por hoje é isto, muito obrigado Hebert. :smiley: [/quote]Eu não fiz nada.

Você é capaz! Go go go! :twisted: [/quote]

Valeu… Não fez neste post, mas em outro, hehe…
Quando deu o Erro que estava passando o Id, encontrei outro post onde você comenta que o converter espera um Integer e está sendo passado uma String.
Então fui verificar isto. :smiley:
Mas obrigado pela atenção tbm.