Ma_ss
#1
Olá pessoal, possuo o seguinte código:
[code]FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) facesContext
.getExternalContext().getContext();
String pathRel = servletContext
.getRealPath("/relatorio/rota_parada.jasper");
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
if (rotaService == null) {
log.error("RotaSE n�o foi instanciado.");
return;
}
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("filtro", getFiltro());
parameters.put("imagem", servletContext
.getRealPath("/img/logogafor.gif"));
parameters.put("powered", servletContext
.getRealPath("/img/powered.gif"));
JRDataSource coll = new JRResultSetDataSource(rotaService
.getRotasRelatorioResult(rota, placaCarreta, produtoId,
placaVeiculo, cidade, estado, motorista,
dataInicial, dataFinal, cliente, statusID));
errorMsgs.clear();
if (parameters != null)
parameters.put(JRParameter.REPORT_LOCALE, new Locale("pt"));
JasperPrint jp = JasperFillManager.fillReport(pathRel, parameters,
coll);
byte[] relatorio = JasperExportManager.exportReportToPdf(jp);
response.setContentType("application/pdf");
response.getOutputStream().write(relatorio); [/code]
Porém ele não abre no browser e também não gera nenhum erro.
Alguém pode me ajudar? 
Ma_ss
#2
Da forma anterior não consegui resolver.
Então utilizei esse código:
[code] public static void abrirRelatorio(byte[] bytes, String fileName) throws Exception {
if (bytes == null)
throw new Exception(“Array de bytes nulo.”);
if (fileName == null)
throw new Exception("Nome do arquivo é nulo.");
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileName + "\";");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
facesContext.responseComplete();
}
public void gerarRelatorio() throws Exception {
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) facesContext
.getExternalContext().getContext();
String pathRel = servletContext
.getRealPath("/relatorio/rota_parada.jasper");
// parametros
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("filtro", getFiltro());
parameters.put("imagem", servletContext
.getRealPath("/img/logogafor.gif"));
parameters.put("powered", servletContext
.getRealPath("/img/powered.gif"));
// recebe por parametro uma lista da propia classe jah populada
JRDataSource coll = new JRResultSetDataSource(rotaService
.getRotasRelatorioResult(rota, placaCarreta, produtoId,
placaVeiculo, cidade, estado, motorista, dataInicial,
dataFinal, cliente, statusID));
try {
JasperPrint print = JasperFillManager.fillReport(pathRel,
parameters, coll);
byte[] bytes = JasperExportManager.exportReportToPdf(print);
Util.abrirRelatorio(bytes, "ListaViagens.pdf");
} catch (Exception e) {
e.printStackTrace();
}
}[/code]
Espero que possa ajudar alguém…
