Pessoal,
estou usando uma api chamada poi para gerar um relatório em excel e estou retornando esse relatório para o cliente manipulando o retorno direto no meu HttpServletResponse.
o problema é que ao fazer isso eu acabo interferindo no ciclo de vida comum do componente ajax do rich e aí ele para de funcionar.
o meu
alguém já passou por isso ou sabe uma possível solução?
<a:region>
<a:commandButton
render="@form"
execute="@region"
value="Gerar RelatórioF"
actionListener="#{acoesRealizadasMB.gerarRealatorio}"
immediate="true" />
</a:region>
<h:commandButton type="button" value="Fechar"
onclick="closeFrame();" immediate="true" />
<rich:popupPanel id="mpStatusF" modal="true" moveable="true" resizeable="false" followByScroll="false" width="80" height="70">
<div align="center">
<div>
<h:graphicImage value="/images/loading.gif" alt="Carregando" />
</div>
<div>
<h:outputText value="#{message['aguarde']}" />
</div>
</div>
</rich:popupPanel>
<a:status id="teste" onstart="#{rich:component('mpStatusF')}.show()" onstop="#{rich:component('mpStatusF')}.hide()" />
private void enviarRelatorio(HSSFWorkbook wb) throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setDateHeader("Expires", 0);
response.setHeader("Content-Disposition", "attachment; filename=acoesRealizadas.xls");
response.setContentType("application/octet-stream");
ServletOutputStream servletOutputStream = response.getOutputStream(); //é aqui que está o problema. o rich chama esse cara internamente...
wb.write(servletOutputStream);
servletOutputStream.flush();
servletOutputStream.close();
context.responseComplete();
}