Como foi necessário usar métodos que forçavam o browser a fazer o download dos mesmos, eu só pude usar o h:commandButton (nâo funciona com a4j:commandButton).
Eu queria que ao clicar no botão de gerar relatório aparecesse um modalPanel de “carregando”. Eu consigo chamar o mesmo, mas não consigo fecha-lo após a geração do relatorio (caixa de download do browser).
Mas é o seguinte, para este tipo de funcionalidade onde é preciso informar o carregamento de algum evento ajax, não se ultiliza modal, existe o seguinte componente:
O que acontece, no momento que ocorrer qualquer evento ajax dentro do REGION (é importante ele estar dentro do region), sera acionado este componente " a4j:status " e ele abre o modal que ai no exemplo coloquei um gif que fica girando, e quando termina o evento é acionado o evento " onstop " do componente a4j:status que no meu exemplo fecha o modal.
Tem mais uma questao que esqueci de falar, vc nao vai poder ultilizar h:commandButton tera que ultilizar a4j:commandButton, ouuuuu vc ultiliza um componente a4j:support
dentro do h:commandButton. Bele?
Faça como o colega falou, como não pode o button, então tenta: a4j:commandLink .
Ele permite onclick e oncomplete. Depois você estiliza ele como botão no CSS.
<script language="javascript" type="text/javascript">
onblur = function escondeLoading(){
if (document.getElementById('loading').style.visibility=="visible"){
document.getElementById('loading').style.visibility="hidden";
}
}
function mostraLoading(){
if (document.getElementById('loading').style.visibility=="hidden"){
document.getElementById('loading').style.visibility="visible";
}
}
</script>