[RESOLVIDO] Problema com o <p:autocomplete>

9 respostas
T

Oi galera,

Tô desenvolvendo um sistema, utilizando jsf com primefaces…

me deparei com um problema…
tenho uma lista com as cidades cadastradas e to usando essa lista pra alimentar o autocomplete.

<p:autoComplete id="nomeCidade" size="50" var="cidade" itemLabel="#{cidade.nome}" itemValue="#{cidade}"
                                        value="#{nucleoBean.cidade.nome}" completeMethod="#{nucleoBean.completaCidades}"                       
                                        converter="ConverterCidadeNucleo" maxResults="5" immediate="true" queryDelay="5" 
                                        forceSelection="true"/>
                        
                        <p:commandButton id="adc" value="Adicionar" action="#{nucleoBean.createNew}" 
                                         update="painelNucleo, msg"  style="margin:10px 0" process="@parent" />

isso funciona.
mas quando eu clico no botão, a cidade selecionada deveria ser adicionada num datatable (isso tava funcionando com a cidade como string, agora que é um objeto não funciona mais), e isso não funciona.
O GlassFish tá relatando um erro de nullpointer:
INFO: java.lang.NullPointerException
java.lang.NullPointerException

Alguem tem alguma ideia do que pode estar acontecendo?

9 Respostas

H

Repare no erro todo que o glassfish aponta. ele vai te mostrar a classe e a linha em que esse erro acontece.

T

mas sei la…

Continua sem mandar a cidade pro datatable…

=S

H

@ThalitaPinheiro:
mas sei la…

Continua sem mandar a cidade pro datatable…

=S

E vai continuar acontecendo, prometo pra vc. :stuck_out_tongue:

Coloca o erro todo aqui.

T
GRAVE: java.lang.NullPointerException
INFO: java.lang.NumberFormatException: For input string: "F"
java.lang.NumberFormatException: For input string: "F"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Long.parseLong(Long.java:410)
	at java.lang.Long.valueOf(Long.java:525)
	at converter.ConverterCidadeNucleo.getAsObject(ConverterCidadeNucleo.java:26)
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.getConvertedValue(AutoCompleteRenderer.java:500)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
	at javax.faces.component.UIInput.validate(UIInput.java:960)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
	at javax.faces.component.UIInput.processDecodes(UIInput.java:665)
	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506)
	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1590)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIForm.visitTree(UIForm.java:335)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
	at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
	at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)

Dá só isso…

=(

rs…

H

Só isso??? Melhor que isso impossível.

Repara que o Java aponta para você a linha exata do erro: converter.ConverterCidadeNucleo.getAsObject(ConverterCidadeNucleo.java:26)

Ou seja, é ali que mora o perigo! rs

O que tem nessa linha?

T

meio que o converter eu peguei o padrao, que o povo me disse lá no projeto q era tudo igual…

@FacesConverter(value = "ConverterCidadeNucleo")
public class ConverterCidadeNucleo implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value != null && !value.equals("")) {
            CidadeDAO dao = new CidadeDAOImpl();
            return dao.getById(Long.valueOf(value));
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value instanceof Cidade) {
            Cidade cidade = (Cidade) value;
            return String.valueOf(cidade.getId());
        }
        return "";
    }
}
T

essa linha 26 é, justamente o

return String.valueOf(cidade.getId());
H

Nunca acredite nesse papo de “é tudo igual”! =P

Repare que NullPointer é pq você está tentando acessar um objeto que não existe objeto, ou seja, está null.

Seu cidade está null e você está tentando fazer um cidade.getId() que seria algo do tipo null.getId(). por isso que rola esse erro.

Trate seu if para validar se o value != null . ^^

T

nó, funcionou…

muito obrigada, viu?

=)

Criado 22 de maio de 2012
Ultima resposta 22 de mai. de 2012
Respostas 9
Participantes 2