2 <p:ajaxstatus> mesma página mesmo h:form

7 respostas
cleiton_herrmann

Olá a todos...

Estou tentando usar 2 ajaxstatus do primefaces na mesma pagina, e quero q hora um deles apareça, hora outro, já tentei de tudo q achei por ai, mas nao tive sucesso... tenho o codigo abaixo, onde o usuario escolhe um tipo de veiculo, e então as marcas e modelos sao atualizados, e depois q ele escolhe uma marca, os modelos são atualizados, está funcionando certinho, mas o problema é q quando eu escolho uma marca e atualizo os modelos, o ajaxstatus de marcas também aparece e eu nao quero q ele apareça.

<h:panelGrid id="primeriaParte" columns="2" rendered="#{anunciarVeiculo.etapa == 1}">
    <h:outputLabel value="Tipo do veículo: " style="font-size: 11px"/>
    <h:selectOneMenu id="tipoVeiculo" 
                     value="#{anunciarVeiculo.idTiposVeiculosSelecionado}"
                     style="font-family: Tahoma;font-size: 11px;width: 150px;height: 20px;">
        <f:selectItems value="#{anunciarVeiculo.listaTiposVeiculos}" />        
        <p:ajax event="change" 
                listener="#{anunciarVeiculo.atualizarMarcasVeiculos()}"
                update="marcasVeiculos,modelosVeiculos" />
    </h:selectOneMenu>

    <h:outputLabel value="Marca: " style="font-size: 11px"/>
    <h:panelGrid id="marcasVeiculos" columns="2" style="margin-left: 0px;">
        <h:outputLabel value="Selecione o tipo do veículo" style="font-size: 11px;"
                   rendered="#{anunciarVeiculo.listaMarcasVeiculos.size() eq 1}"/>

        <h:selectOneMenu id="marcas"
                         value="#{anunciarVeiculo.idMarcasVeiculosSelecionado}"
                         style="font-family: Tahoma;font-size: 11px;width: 150px;height: 20px;" 
                         rendered="#{anunciarVeiculo.listaMarcasVeiculos.size() gt 1}">
            <f:selectItems value="#{anunciarVeiculo.listaMarcasVeiculos}" />                         
            <p:ajax event="change" 
                    listener="#{anunciarVeiculo.atualizarModelosVeiculos()}" 
                    update="modelosVeiculos"/>
        </h:selectOneMenu>

        <p:ajaxStatus style="height:20px;" >  
            <f:facet name="start" >  
                <p:graphicImage  value="/imagens/carregando.gif" style="border: 0px;" />
            </f:facet>  
        </p:ajaxStatus>
    </h:panelGrid>

    <h:outputLabel value="Modelo: " style="font-size: 11px"/>
    <h:panelGrid id="modelosVeiculos" columns="2" style="margin-left: 0px;">
        <h:outputLabel value="Selecione a marca do veículo" style="font-size: 11px;"
                       rendered="#{anunciarVeiculo.listaModelosVeiculos.size() eq 1}"/>

        <h:selectOneMenu value="#{anunciarVeiculo.idModelosVeiculosSelecionado}"
                         style="font-family: Tahoma;font-size: 11px;width: 400px;height: 20px;" 
                         rendered="#{anunciarVeiculo.listaModelosVeiculos.size() gt 1}">
            <f:selectItems value="#{anunciarVeiculo.listaModelosVeiculos}" />                         
        </h:selectOneMenu>

        <p:ajaxStatus style="height:20px;" >  
            <f:facet name="start">  
                <p:graphicImage value="/imagens/carregando.gif"  style="border: 0px;"/>
            </f:facet>  
        </p:ajaxStatus>
    </h:panelGrid>
</h:panelGrid>
alguem tem uma ideia de como fazer ? Desde já grato !

7 Respostas

cleiton_herrmann

já tentei usar o atributo widgetVar do ajaxstatus, e no onstart e oncomplete do p:ajax chamar ajaxstatus.show(); e .hide(); respectivamente, como neste post http://groups.google.com/group/javasf/browse_thread/thread/dafdd83cf3168e93?fwc=1 mas também nao funcionou

Vin_ius_Abreu_de_Fra

Cara, estou com o mesmo problema! Gostaria de saber como enviar as chamadas do ajax para um ajaxStatus em específico…

cleiton_herrmann

cara, eu nem lembro se consegui fazer isso, parei de trabalhar com desenvolvimento, mas na verdade vc nao envia nd pro ajaxstatus, ele funciona sozinho quando vc faz uma chamada ajax, (eu acho kkkkk) nem lembro mais

L

se nao me engano ele só dispara quando tem alguma chamada ajax na tela. eu usei assim seguindo exemplo do primefaces showcase

<p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>  

            <p:dialog modal="true" widgetVar="statusDialog" header="Status"   
                      draggable="false" closable="false">  
                <p:graphicImage value="/design/ajaxloadingbar.gif" />  
            </p:dialog>

no caso o stats chama o dialog, quando ele termina de fazer o que tiver que fazer, ele fecha a dialog. não tenho certeza se vocês podem usar 2 por tela ;/

cleiton_herrmann

é verdade, eu lembro que gastei uns 3 dias tentando usar 2 em tela, mas nao me lembro de ter conseguido…
a minha intenção era fazer aparecer um gif quando determinada ação ocorresse.
e com o post do leandropbahia eu lembrei, como nao consegui colocar mais de 1 ajaxstatus na mesma pagina, eu criei dialogs diferentes, cada um com seu gif, de barra de progresso, ou aquela bolinha q fica girando, foi bem assim q eu fiz, só nao vou colocar exemplo, pq ja faz tempo q nao mecho com essas coisas, e seria uma verdadeira caça kkkk e o exemplo do leandro já mais q suficiente tbem

vlw t+

Vin_ius_Abreu_de_Fra

Pensei em fazer dessa forma Cleiton, utilizando vários dialogs, mas o problema tá aí, não quero usar dialogs e sim mostrar um gif no mesmo panel ao início do ajax e retirar o gif no final.

cleiton_herrmann

pois é, era minha idéia tbem, mas acabei desistindo, em outras tecnologias parece ser mais facil fazer isso, tem autos sites que tem vários gifs ao lado dos textbox ou de um link, mas no java eu nao consegui fazer, mas a ideia dos dialogs é legal tbem cara, faz um dialog pequenininho, bem ajeitadinho, ele vai dar aquela escurecida no resto da pagina enquanto processa, fica bacana tbem, e se vc conseguir fazer 2 ajaxstatus funcionar na mesma pagina, nao esquece de postar ai pra gnt kkkk

vlw t+

Criado 5 de dezembro de 2011
Ultima resposta 15 de ago. de 2012
Respostas 7
Participantes 3