Barra de status com a4j - URGENTE

3 respostas
Vini_Fernandes

Meu problema eh o seguinte: tenho que enviar um arquivo para impressora e devo exibir para o usuario uma barra de status desse Job. Alguem tem alguma dica?

valeu

3 Respostas

Giulliano

1 - crie um Modal Panel com a frase "Processando…"
2 - no seu botão coloque dois “a4j:suport” onde:
2.1 - O primeiro abre o Modal no evento onclick
2.1 - O segundo fecha o Model no evento oncomplete

obs.: para isso funcionar seu botão deve ser do tipo a4j:commandButton (pois só ele possue o evento oncomplete)

Vini_Fernandes

Entao cara, o problema eh que eu tenho que efetuar uma validacao antes de abrir o modal e caso o campo cnpj seja invalidado eu nao devo abrir o modal. Tentei o que voce sugeriu e ele esta abrindo de qualquer maneira.

<a4j:form>
                            <h:panelGrid columns="3">
                                <h:outputText value="Ordem de Embarque:"/>
                                <h:inputText id="ordemEmbarque" value="#{MBNF.ordemEmbarque}" size="20" styleClass="edit" >
                                    <f:validator validatorId="ordemEmbarque"/>
                                </h:inputText>
                                <a4j:commandButton value="Imprimir" styleClass="botoes">
                                    <a4j:support action="#{MBNF.imprimeOrdemEmbarque}" event="onclick" oncomplete="javascript:Richfaces.showModalPanel('pnlImprimindoOrdemEmbarque');"/>                                    
                                </a4j:commandButton>
                            </h:panelGrid>
                            <a4j:outputPanel ajaxRendered="true">
                                <h:outputText id="error" value="#{MBNF.msgErro}" styleClass="mensagemErroSemImagem"/>
                            </a4j:outputPanel>
                        </a4j:form>
Giulliano

Então vini…dá um pouco de trabalho pra fazer…dá uma olhada neste exemplo

&lt;a4j:form id="formAbc"&gt;
	&lt;h:panelGrid columns="3"&gt;
		&lt;h:outputText value="Ordem de Embarque:" /&gt;
		&lt;h:inputText id="ordemEmbarque" value="#{MBNF.ordemEmbarque}" size="20" styleClass="edit"&gt;
			&lt;f:validator validatorId="ordemEmbarque" /&gt;
		&lt;/h:inputText&gt;
		&lt;a4j:commandButton value="Imprimir" styleClass="botoes"&gt;
			&lt;a4j:support action="#{MBNF.enablePopUp}" event="onclick" reRender="formAbc"/&gt;
			&lt;a4j:support action="#{MBNF.disablePopUp}" event="oncomplete" reRender="formAbc"/&gt;
		&lt;/a4j:commandButton&gt;
	&lt;/h:panelGrid&gt;
	
	&lt;a4j:outputPanel ajaxRendered="true"&gt;
		&lt;h:outputText id="error" value="#{MBNF.msgErro}"
			styleClass="mensagemErroSemImagem" /&gt;
	&lt;/a4j:outputPanel&gt;
	
	&lt;rich:modalPanel id="panel" width="350" height="100" showWhenRendered="#{MBNF.showPopUp}"&gt;
        &lt;f:facet name="header"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:outputText value="Aguarde"/&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;f:facet name="controls"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:graphicImage value="/images/modal/close.png" styleClass="hidelink" id="hidelink"/&gt;
                &lt;rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;h:outputText value="Processando..."/&gt;
        <br/>
    &lt;/rich:modalPanel&gt;

&lt;/a4j:form&gt;

A diferença é que eu usei um atributto boolean chamado “showPopUp” e dois métodos “enablePopUp” e “disablePopUp” um deles passa o atributo para true e o outro para false. No modal toda vez q esse atributo for true o modal vai ficar aberto independente de vc mandar fechar.

Então vc pode realizar as validações e se der tudo certo passa esse atributo pra true.

Criado 14 de dezembro de 2009
Ultima resposta 15 de dez. de 2009
Respostas 3
Participantes 2