Pessoal,
Preciso exibir um relatório gerado pelo servlet, entretanto não estou conseguindo. O relatório é gerado via requisição ajax, pois precisando exibir a mensagem “Carregando”. Acredito que tenho que abrir via iframe, mas estou com dificuldades. Por favor, me ajudem.
Obs: Não gostaria de gravar em disco o .pdf.
Chamadas ajax
function submitAjax(){
htmlText = '<i18n:message key='paginaRelatorio.carregarRelatorio'/>';
document.getElementById("info").innerHTML=htmlText;
var url = "relatorio?relat=Produtividade¶metro=1";
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function handleStateChange(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
var size = xmlHttp.responseText.length;
if(size==0){
alert('Não há dados');
}
}
}
}
ServletRelatorio.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
list = (List)AtividadeFuncionarioFactory.generateCollection();
relatorioXml = context.getRealPath(getNomeRelatorioTemplate());
parameters=parametrizar();
byte[] output = null;
JRExporter exporter = null;
if (list.size() > 0) {
response.setContentType("application/pdf");
output = Report.exportReportToPdf(Report.generate(list, relatorioXml, parameters));
response.setHeader("Content-Disposition", "attachment; filename=relatorio" + extensao);
response.setContentLength(output.length);
ServletOutputStream ouputStream;
ouputStream = response.getOutputStream();
ouputStream.write(output);
ouputStream.flush();
ouputStream.close();
}
}