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

1 resposta
Fernando_Romulo_da_S

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á…

1 Resposta

Fernando_Romulo_da_S

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.

Criado 6 de abril de 2011
Ultima resposta 8 de abr. de 2011
Respostas 1
Participantes 1