P:fileDownload + ajax="true" tem como?

Pessoal, boa tarde.
Estrou num impasse com um botão aqui na minha aplicação:

Quero gerar e fazer um download de um arquivo, o bean funciona perfeito, o problema está no componente do prime, se eu deixar o ajax=“false” o download do arquivo funciona perfeito, mas o oncomplete não é chamado (não sei pq) e o modal para aguardar não some e nem o de mensagem de resposta aparece.
Eu preciso do modal de resposta pois o arquivo pode vir vazio e preciso avisar o usuário.
Se eu mudar para ajax=“true”, os modais aparecem e somem corretamente, mas o browser não executa o download, alguem pode me ajudar?, segue o codigo:

<p:commandButton ajax="false" value="#{msg.gerar_backup}" onclick="modalAguarde.show()" oncomplete="modalMensagem.show(),modalAguarde.hide()"> <p:fileDownload value="#{backupBean.file}"/> </p:commandButton>

Se estiver usando JSF troque o p:commandButton para h:commandButton. Vê se dá certo.

Opa, obrigado pela resposta mas, não funcionou, infelizmente, troquei para h:commandButton, e continua igual, o modal aparece, a janela de download tbm, mas ao fechar a janela de download o oncomplete não é executado, não sei mais o que fazer pra resolver isso.

Solucionado paliativamente, criei 1 botão pra gerar o arquivo e mostrar modais e outro pra fazer o download, nesse de download so aparece quando o arquivo é gerado e ja some no click de download, não é o ideal mas me atende por agora, se alguem souber a solução correta me avise por favor.

Segue o codigo dos botões:

<p:commandButton update="formMain" value="#{msg.gerar_backup}" action="#{backupBean.salvarBackup}" onclick="modalAguarde.show()" oncomplete="modalMensagem.show(),modalAguarde.hide()"> </p:commandButton> <p:commandButton rendered="#{backupBean.backupSucesso}" id="btnDownload" ajax="false" value="#{msg.global_download}" onclick="document.getElementById(id).style.display = 'none';"> <p:fileDownload value="#{backupBean.file}"/> </p:commandButton>

Tive um problema parecido com o seu. Usando requisição ajax meu relatório não era exibido mas o modal de aguarde era exibido, fazendo com html o relatório era exibido mas o modal não.
Tive problemas com html porque o relatório coleta dados do banco de dados e faz consultas no mainframe, como a consulta era demorada (10s), se nesse tempo o usuário fizesse outra requisição eu tinha um erro de concorrência do jboss seam.
solução:
o relatório era solicitado por ajax e o conteúdo era guardado em uma variável na action, no oncomplete do botão eu verifico se o conteúdo foi gerado se sim por javascript clico num link oculto que exibe o relatório, nesse caso é gerado em poucos milisegundos já que o conteúdo já esta numa variável.

<a4j:commandButton value="Gerar Relatório"      action="#{relatorioAction.gerarRelatorio(bean)}"
        oncomplete="if(#{relatorioAction.conteudoRelatorio != null}){document.getElementById('form:linkExibir').click();}"
        reRender="divMensagens"
/>
	 

<h:commandLink id="linkExibir"	action="#{relatorioAction.exibirRelatorio()}"/>