Problema com p:commandButton (primeFaces) com ajax com bean gerenciado pelo CDI

Boa tarde pessoal…

Estou com um problema aqui, estou usando jboss6 com primefaces 2.2.1.

Tenho um bean gerenciado pelo cdi em escopo de conversacao (ja inicie a convesacao) que tem um metodo “pesquisar” que tento excuta-lo via ajax, vejam:



@Named
@ConversationScoped
public class AlterarNumeroCartaoSelecionarFuncionarioMB implements Serializable {

 ....
   
    public void pesquisar() {

        AttributeCriterionModel a  = funcionarioCriterionBuilder.getCriterion().getAttribute();   
        
        String nomeFuncionario = null;
        String cpfFuncionario = null;
        
        if (a.getName().equals("nome")) {
            nomeFuncionario = (String) funcionarioCriterionBuilder.getCriterion().getValue();
        }else{
            cpfFuncionario = (String) funcionarioCriterionBuilder.getCriterion().getValue();
        }
        
        if (nomeFuncionario == null && cpfFuncionario == null) {
            
            String mensagen = "Error na pesquisa.";
            String detalheMensagem = "Insira valor na pesquisa.";
            MessagesUtil.addWarning(mensagen, detalheMensagem);            
            
            return;
        }
        
        
        listaFuncionario.clear();
 listaFuncionario.addAll(serviceImpl.buscarFuncionarioAlterarNumeroCartaoVOPorIdEmissorPorIdInsumoPorIdClienteNegocioPorNomeFuncionarioPorCpfFuncionario(emissorSelecionado.getId(), insumoSelecionado.getId(), clienteSelecionado.getId(), nomeFuncionario, cpfFuncionario));
    }

 ...
}

Quando coloco o componente p:commandButton do primefaces, vejam o xhtml:


				<p:commandButton action="#{bean.pesquisar}" value="pesquisar" ajax="true" />
				

E da o seguinte erro:


2011-04-06 16:08:36,356 ERROR [STDERR] (http-127.0.0.1-8080-5) javax.faces.FacesException: Unexpected error restoring state for component with id j_idt16.  Cause: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0.

2011-04-06 16:08:36,356 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:250)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:147)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1476)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)

2011-04-06 16:08:36,357 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIForm.visitTree(UIForm.java:322)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:234)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:177)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:119)

2011-04-06 16:08:36,358 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:438)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:144)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:284)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:182)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)

2011-04-06 16:08:36,359 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)

2011-04-06 16:08:36,360 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)

2011-04-06 16:08:36,360 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324)

2011-04-06 16:08:36,360 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)

2011-04-06 16:08:36,360 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63)

2011-04-06 16:08:36,361 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)

2011-04-06 16:08:36,361 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)

2011-04-06 16:08:36,361 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)

2011-04-06 16:08:36,361 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)

2011-04-06 16:08:36,361 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261)

2011-04-06 16:08:36,362 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

2011-04-06 16:08:36,363 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53)

2011-04-06 16:08:36,364 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)

2011-04-06 16:08:36,364 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)

2011-04-06 16:08:36,364 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654)

2011-04-06 16:08:36,364 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)

2011-04-06 16:08:36,364 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at java.lang.Thread.run(Thread.java:619)

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at java.util.ArrayList.RangeCheck(ArrayList.java:547)

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at java.util.ArrayList.get(ArrayList.java:322)

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.AttachedObjectListHolder.restoreState(AttachedObjectListHolder.java:161)

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1428)

2011-04-06 16:08:36,365 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at javax.faces.component.UIOutput.restoreState(UIOutput.java:251)

2011-04-06 16:08:36,366 ERROR [STDERR] (http-127.0.0.1-8080-5) 	at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:242)

2011-04-06 16:08:36,366 ERROR [STDERR] (http-127.0.0.1-8080-5) 	... 44 more

No glassfish tb nao funciona, sera que é bug do cdi? Obridado desde já…

Resolvi desta maneira:

Ao navegar entre paginas eu uso o redirect na url “faces-redirect=true”, vejam

public String suaAction() {

    return "sua_url?faces-redirect=true"";

}

Agora porque funciona… quem souber agradeço!

Obrigado e até mais.