Como fazer o fileDownload criar e disponibilizar o arquivo ao mesmo tempo?

Fala galera.

Estou usando o componente fileDownload do primefaces. Mas estou criando o arquivo quando o usuário faz a pesquisa. Queria criar o arquivo assim que o usuário clicasse no botão de download. Como fazer?

Segue trecho do código da página:

<f:facet name="{Exporters}">
    <div style="float: right;">
   	<h:commandLink ajax="false"
	onclick="PrimeFaces.monitorDownload(start, stop);" >
        	<p:graphicImage library="images" name="icon_excel.png" />
		<p:fileDownload value="#{relatorioDefeitosMakeUp.arquivo}" />
	</h:commandLink>
    </div>
</f:facet>