[RESOLVIDO]Problema de navegação com PrimeFaces com ajax

Pessoal,

  Tenho um template com um <p:menuBar> do primefaces. Quando eu ativei o ajax dos p:menuitens para chamar um gif (tipo loading) ele começou a dar um probleminha de navegação. Quando eu clico em um menu a primeira vez ele chama a pagina normalmente, quando eu tento mudar de pagina (chamar outro link do menu) ele não vai na primeira vez, somente quando eu clico a segunda vez é que ele vai.

  Alguem sabe por quê?

Sds,

Maurício.

Pode postar o código da página? Quem sabe eu possa ajudar.

  Este é o templete com o menu...
<?xml version='1.0' encoding='UTF-8' ?> 
<!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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    
    
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><ui:insert name="title">Default Title</ui:insert></title>
<h:outputStylesheet name="css/jsfcrud.css"/>
    </h:head>
   
    <h:body>
        <div>
                <center>                    
                    <h:graphicImage library="images" name="topo_site.jpg" width="774" height="196" alt="topo" />
                </center>  
       </div>
        <f:view>     
            <h:form styleClass="jsfcrud_list_form">
                <center>
                    <h:panelGrid width="774">
                        <p:growl id="messages"/>  
                        <p:menubar autoDisplay="true">  
                            <p:submenu label="Cadastros" >  
                                <p:menuitem value="Comunicação" ajax="true" action="#{comunicacaoController.prepareCreate()}" />
                                <p:menuitem value="Empresa" ajax="true" action="#{empresaController.prepareCreate()}" />
                                <p:menuitem value="Equipamentos" ajax="true" action="#{equipamentosController.prepareCreate()}" />
                                <p:menuitem value="Regional" ajax="true" action="#{regionalController.prepareCreate()}" />
                                <p:menuitem value="Tipos de Equipamentos" ajax="true" action="#{tipoeqController.prepareCreate()}" />  
                                <p:menuitem value="Acessorios" ajax="true" action="#{acessorioController.prepareCreate()}" />
                                <p:menuitem value="Chips" ajax="true" action="#{chipController.prepareCreate()}"/>  
                                <p:menuitem value="Endereço" ajax="true" action="#{enderecoController.prepareCreate()}" />
                                <p:menuitem value="Usuários" ajax="true" action="#{usuariosController.prepareCreate()}" />
                            </p:submenu> 
                            <p:submenu label="Consultas" >  
                                <p:submenu label="Consultar equipamento">
                                    <p:menuitem value="Listar todos" ajax="true" action="/crud/equipamentos/List" />
                                    <p:menuitem value="Consultar por código" ajax="true" action="/crud/equipamentos/ConsultaCodigo"/>
                                    <p:menuitem value="Consultar por equipamento" ajax="true" action="/crud/equipamentos/Consulta"/>
                                    <p:menuitem value="Consultar por regional" ajax="true" action="/crud/equipamentos/ConsultaRegional"/>
                                    <p:menuitem value="Consultar por tipo de comunicação" ajax="true" action="/crud/equipamentos/ConsultaComunicacao"/>
                                    <p:menuitem value="Consultar por empresa" ajax="true" action="/crud/equipamentos/ConsultaEmpresa"/>                    
                                </p:submenu>  
                                <p:submenu label="Consultar Acessório">
                                    <p:menuitem value="Litar todos" ajax="true" action="/crud/acessorio/List"/>
                                    <p:menuitem value="Consutar por IMEI" ajax="true" />
                                    <p:menuitem value="Consutar por Número de Serie" ajax="true" />
                                </p:submenu>
                                <p:submenu label="Consultar Chip">
                                    <p:menuitem value="Listar todos" ajax="true"  action="/crud/chip/List"/>
                                    <p:menuitem value="Consultar por ICCID" ajax="true"  />
                                    <p:menuitem value="Consultar por Equipamento" ajax="true"  />
                                    <p:menuitem value="Consultar por Acessório (IMEI)" ajax="true"  />
                                </p:submenu>   
                                <p:menuitem value="Consultar rota para equipamento" ajax="true"  />
                                
                            </p:submenu>
                            <p:submenu label="Relatórios" >
                                <p:submenu label="Disponibilidade">
                                    <p:menuitem value="Religadores GPRS" ajax="true"  action="/crud/indSemanalRlGPRS/List"/>
                                    <p:menuitem value="Religadores RÁDIO" ajax="true"  action="/crud/indSemanalRLRadio/List"/>
                                    <p:menuitem value="Reguladores GPRS" ajax="true"  action="/crud/indSemanalRGGPRS/List"/>
                                    <p:menuitem value="Reguladores RÁDIO" ajax="true"  action="/crud/indSemanalRGRADIO/List"/>
                                    <p:menuitem value="Sinalizadores GPRS" ajax="true"  action="/crud/indSemanalSFGPRS/List"/>
                                    <p:menuitem value="Sinalizadores RÁDIO" ajax="true"  action="/crud/indSemanalSFRadio/List"/>
                                </p:submenu>
                            </p:submenu>
                        </p:menubar>
                    </h:panelGrid>
                </center>    
            </h:form>
            <p:ajaxStatus style="width:208px;height:172px;position:fixed;right:350px;top:150px">  
                    <f:facet name="start">  
                        <p:graphicImage library="images" name="loadingcolor2.gif" />  
                    </f:facet>  
  
                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus> 
        </f:view>
        <center>

        <h1>
            <ui:insert name="title">Default Title</ui:insert>
        </h1>
        <p>
            <ui:insert name="body">Default Body</ui:insert>
        </p>
        </center>
    </h:body>

</html>

Sds,

Maurício.

E ai guilherme, alguma luz?

Sds,

Maurício.

  Este é o templete com o menu...
<?xml version='1.0' encoding='UTF-8' ?> 
<!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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    
    
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><ui:insert name="title">Default Title</ui:insert></title>
<h:outputStylesheet name="css/jsfcrud.css"/>
    </h:head>
   
    <h:body>
        <div>
                <center>                    
                    <h:graphicImage library="images" name="topo_site.jpg" width="774" height="196" alt="topo" />
                </center>  
       </div>
        <f:view>     
            <h:form styleClass="jsfcrud_list_form">
                <center>
                    <h:panelGrid width="774">
                        <p:growl id="messages"/>  
                        <p:menubar autoDisplay="true">  
                            <p:submenu label="Cadastros" >  
                                <p:menuitem value="Comunicação" ajax="true" action="#{comunicacaoController.prepareCreate()}" />
                                <p:menuitem value="Empresa" ajax="true" action="#{empresaController.prepareCreate()}" />
                                <p:menuitem value="Equipamentos" ajax="true" action="#{equipamentosController.prepareCreate()}" />
                                <p:menuitem value="Regional" ajax="true" action="#{regionalController.prepareCreate()}" />
                                <p:menuitem value="Tipos de Equipamentos" ajax="true" action="#{tipoeqController.prepareCreate()}" />  
                                <p:menuitem value="Acessorios" ajax="true" action="#{acessorioController.prepareCreate()}" />
                                <p:menuitem value="Chips" ajax="true" action="#{chipController.prepareCreate()}"/>  
                                <p:menuitem value="Endereço" ajax="true" action="#{enderecoController.prepareCreate()}" />
                                <p:menuitem value="Usuários" ajax="true" action="#{usuariosController.prepareCreate()}" />
                            </p:submenu> 
                            <p:submenu label="Consultas" >  
                                <p:submenu label="Consultar equipamento">
                                    <p:menuitem value="Listar todos" ajax="true" action="/crud/equipamentos/List" />
                                    <p:menuitem value="Consultar por código" ajax="true" action="/crud/equipamentos/ConsultaCodigo"/>
                                    <p:menuitem value="Consultar por equipamento" ajax="true" action="/crud/equipamentos/Consulta"/>
                                    <p:menuitem value="Consultar por regional" ajax="true" action="/crud/equipamentos/ConsultaRegional"/>
                                    <p:menuitem value="Consultar por tipo de comunicação" ajax="true" action="/crud/equipamentos/ConsultaComunicacao"/>
                                    <p:menuitem value="Consultar por empresa" ajax="true" action="/crud/equipamentos/ConsultaEmpresa"/>                    
                                </p:submenu>  
                                <p:submenu label="Consultar Acessório">
                                    <p:menuitem value="Litar todos" ajax="true" action="/crud/acessorio/List"/>
                                    <p:menuitem value="Consutar por IMEI" ajax="true" />
                                    <p:menuitem value="Consutar por Número de Serie" ajax="true" />
                                </p:submenu>
                                <p:submenu label="Consultar Chip">
                                    <p:menuitem value="Listar todos" ajax="true"  action="/crud/chip/List"/>
                                    <p:menuitem value="Consultar por ICCID" ajax="true"  />
                                    <p:menuitem value="Consultar por Equipamento" ajax="true"  />
                                    <p:menuitem value="Consultar por Acessório (IMEI)" ajax="true"  />
                                </p:submenu>   
                                <p:menuitem value="Consultar rota para equipamento" ajax="true"  />
                                
                            </p:submenu>
                            <p:submenu label="Relatórios" >
                                <p:submenu label="Disponibilidade">
                                    <p:menuitem value="Religadores GPRS" ajax="true"  action="/crud/indSemanalRlGPRS/List"/>
                                    <p:menuitem value="Religadores RÁDIO" ajax="true"  action="/crud/indSemanalRLRadio/List"/>
                                    <p:menuitem value="Reguladores GPRS" ajax="true"  action="/crud/indSemanalRGGPRS/List"/>
                                    <p:menuitem value="Reguladores RÁDIO" ajax="true"  action="/crud/indSemanalRGRADIO/List"/>
                                    <p:menuitem value="Sinalizadores GPRS" ajax="true"  action="/crud/indSemanalSFGPRS/List"/>
                                    <p:menuitem value="Sinalizadores RÁDIO" ajax="true"  action="/crud/indSemanalSFRadio/List"/>
                                </p:submenu>
                            </p:submenu>
                        </p:menubar>
                    </h:panelGrid>
                </center>    
            </h:form>
            <p:ajaxStatus style="width:208px;height:172px;position:fixed;right:350px;top:150px">  
                    <f:facet name="start">  
                        <p:graphicImage library="images" name="loadingcolor2.gif" />  
                    </f:facet>  
  
                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus> 
        </f:view>
        <center>

        <h1>
            <ui:insert name="title">Default Title</ui:insert>
        </h1>
        <p>
            <ui:insert name="body">Default Body</ui:insert>
        </p>
        </center>
    </h:body>

</html>

Sds,

Maurício.

[/quote]
Boa noite Maurício,

Seguem algumas sugestões que eu faço para você, como também já tive problemas com o <p:menuitem>.

Tente colocar o seguinte código dentro de <h:form styleClass=“jsfcrud_list_form”>:

                	<p:ajaxStatus onstart="dlg.show();" oncomplete="dlg.hide();" />
                	<p:dialog widgetVar="dlg" resizable="false" closable="false" modal="true" appendToBody="true" draggable="false" minimizable="true" 
                	   maximizable="false" >  
                              <h:graphicImage library="images" name="loadingcolor2.gif" />  
			</p:dialog>

Você pode tirar essa parte dai:

            <p:ajaxStatus style="width:208px;height:172px;position:fixed;right:350px;top:150px">  
                    <f:facet name="start">  
                        <p:graphicImage library="images" name="loadingcolor2.gif" />  
                    </f:facet>  
  
                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus> 

Fiz um teste aqui e funcionou, tenta ai e me diga se deu certo.

  Este é o templete com o menu...
<?xml version='1.0' encoding='UTF-8' ?> 
<!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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    
    
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><ui:insert name="title">Default Title</ui:insert></title>
<h:outputStylesheet name="css/jsfcrud.css"/>
    </h:head>
   
    <h:body>
        <div>
                <center>                    
                    <h:graphicImage library="images" name="topo_site.jpg" width="774" height="196" alt="topo" />
                </center>  
       </div>
        <f:view>     
            <h:form styleClass="jsfcrud_list_form">
                <center>
                    <h:panelGrid width="774">
                        <p:growl id="messages"/>  
                        <p:menubar autoDisplay="true">  
                            <p:submenu label="Cadastros" >  
                                <p:menuitem value="Comunicação" ajax="true" action="#{comunicacaoController.prepareCreate()}" />
                                <p:menuitem value="Empresa" ajax="true" action="#{empresaController.prepareCreate()}" />
                                <p:menuitem value="Equipamentos" ajax="true" action="#{equipamentosController.prepareCreate()}" />
                                <p:menuitem value="Regional" ajax="true" action="#{regionalController.prepareCreate()}" />
                                <p:menuitem value="Tipos de Equipamentos" ajax="true" action="#{tipoeqController.prepareCreate()}" />  
                                <p:menuitem value="Acessorios" ajax="true" action="#{acessorioController.prepareCreate()}" />
                                <p:menuitem value="Chips" ajax="true" action="#{chipController.prepareCreate()}"/>  
                                <p:menuitem value="Endereço" ajax="true" action="#{enderecoController.prepareCreate()}" />
                                <p:menuitem value="Usuários" ajax="true" action="#{usuariosController.prepareCreate()}" />
                            </p:submenu> 
                            <p:submenu label="Consultas" >  
                                <p:submenu label="Consultar equipamento">
                                    <p:menuitem value="Listar todos" ajax="true" action="/crud/equipamentos/List" />
                                    <p:menuitem value="Consultar por código" ajax="true" action="/crud/equipamentos/ConsultaCodigo"/>
                                    <p:menuitem value="Consultar por equipamento" ajax="true" action="/crud/equipamentos/Consulta"/>
                                    <p:menuitem value="Consultar por regional" ajax="true" action="/crud/equipamentos/ConsultaRegional"/>
                                    <p:menuitem value="Consultar por tipo de comunicação" ajax="true" action="/crud/equipamentos/ConsultaComunicacao"/>
                                    <p:menuitem value="Consultar por empresa" ajax="true" action="/crud/equipamentos/ConsultaEmpresa"/>                    
                                </p:submenu>  
                                <p:submenu label="Consultar Acessório">
                                    <p:menuitem value="Litar todos" ajax="true" action="/crud/acessorio/List"/>
                                    <p:menuitem value="Consutar por IMEI" ajax="true" />
                                    <p:menuitem value="Consutar por Número de Serie" ajax="true" />
                                </p:submenu>
                                <p:submenu label="Consultar Chip">
                                    <p:menuitem value="Listar todos" ajax="true"  action="/crud/chip/List"/>
                                    <p:menuitem value="Consultar por ICCID" ajax="true"  />
                                    <p:menuitem value="Consultar por Equipamento" ajax="true"  />
                                    <p:menuitem value="Consultar por Acessório (IMEI)" ajax="true"  />
                                </p:submenu>   
                                <p:menuitem value="Consultar rota para equipamento" ajax="true"  />
                                
                            </p:submenu>
                            <p:submenu label="Relatórios" >
                                <p:submenu label="Disponibilidade">
                                    <p:menuitem value="Religadores GPRS" ajax="true"  action="/crud/indSemanalRlGPRS/List"/>
                                    <p:menuitem value="Religadores RÁDIO" ajax="true"  action="/crud/indSemanalRLRadio/List"/>
                                    <p:menuitem value="Reguladores GPRS" ajax="true"  action="/crud/indSemanalRGGPRS/List"/>
                                    <p:menuitem value="Reguladores RÁDIO" ajax="true"  action="/crud/indSemanalRGRADIO/List"/>
                                    <p:menuitem value="Sinalizadores GPRS" ajax="true"  action="/crud/indSemanalSFGPRS/List"/>
                                    <p:menuitem value="Sinalizadores RÁDIO" ajax="true"  action="/crud/indSemanalSFRadio/List"/>
                                </p:submenu>
                            </p:submenu>
                        </p:menubar>
                    </h:panelGrid>
                </center>    
            </h:form>
            <p:ajaxStatus style="width:208px;height:172px;position:fixed;right:350px;top:150px">  
                    <f:facet name="start">  
                        <p:graphicImage library="images" name="loadingcolor2.gif" />  
                    </f:facet>  
  
                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus> 
        </f:view>
        <center>

        <h1>
            <ui:insert name="title">Default Title</ui:insert>
        </h1>
        <p>
            <ui:insert name="body">Default Body</ui:insert>
        </p>
        </center>
    </h:body>

</html>

Sds,

Maurício.

[/quote]
Boa noite Maurício,

Seguem algumas sugestões que eu faço para você, como também já tive problemas com o <p:menuitem>.

Tente colocar o seguinte código dentro de <h:form styleClass=“jsfcrud_list_form”>:

                	<p:ajaxStatus onstart="dlg.show();" oncomplete="dlg.hide();" />
                	<p:dialog widgetVar="dlg" resizable="false" closable="false" modal="true" appendToBody="true" draggable="false" minimizable="true" 
                	   maximizable="false" >  
                              <h:graphicImage library="images" name="loadingcolor2.gif" />  
			</p:dialog>

Você pode tirar essa parte dai:

            <p:ajaxStatus style="width:208px;height:172px;position:fixed;right:350px;top:150px">  
                    <f:facet name="start">  
                        <p:graphicImage library="images" name="loadingcolor2.gif" />  
                    </f:facet>  
  
                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus> 

Fiz um teste aqui e funcionou, tenta ai e me diga se deu certo.[/quote]

Velho, testei aqui mas continuou dando o mesmo problema…

Será que tem alguma coisa haver com o fato do <p:menu> estar no template? Tem algum problema nisso?

Senhores,

  Resolvi da seguinte forma: Limpei tudo quanto era cache dos navegadores (IE, FF, CHROME). Depois atualizei o PrimeFaces de 3.4 para 3.5.

Sds,

Maurício.