Tenho uma aplicaçao JSF, onde estou fazendo os meus relatorios, consigo exportar, e AS VEZES consigo visualizar, as vezes nao. Isso na minha maquina, ou seja em desenvolvimento, já no Cliente, nao funciona, nao consigo visualizar nenhuma vez, so exportar.
esse é o meu codigo.
Informa qual vai ser o relatorio e os parametros, caso houver
Map parameters = new HashMap();
parameters.put("ifornecedor", campo.getFornecedor());
parameters.put("data1", campo.getDtInicial());
parameters.put("data2", campo.getDtFinal());
parameters.put("scabecalho", filtro);
RelatorioPadrao.criaRel("RelAvaliacoes.jasper", parameters);
Gera o relatorio.
private static FacesContext context;
private static ServletContext servletContext;
private static String caminhoRelatorio;
public static void criaRel(String caminho, Map parametrs) throws JRException {
try {
context = FacesContext.getCurrentInstance();
servletContext = (ServletContext) context.getExternalContext().getContext();
caminhoRelatorio = servletContext.getRealPath("WEB-INF/classes/Relatorios/" + "/" + caminho);
JasperPrint relat = JasperFillManager.fillReport(caminhoRelatorio, parametrs, Conexao.Conecta());
ResultSet rs = Conexao.Consulta("select exportarelatorio, caminhoexporta from admleite.leite_configuracoes");
boolean bExporta = false;
String caminhoExporta = null;
while (rs.next()){
bExporta = rs.getBoolean("exportarelatorio");
caminhoExporta = rs.getString("caminhoexporta");
}
if (bExporta){
// exportacao do relatorio para outro formato, no caso PDF
JasperExportManager.exportReportToPdfFile(relat,
caminhoExporta + "/" + caminho.replace(".jasper", "") + ".pdf");
}
JasperViewer.viewReport(relat, true);
} catch (Exception e) {
FacesMessage msg = new FacesMessage(
"Erro ao gerar relatório. " + e.getMessage());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
Para a exportaçao, pra PDF, funciona legal, exporta direitinho, sem erro algum, porém para a visualizaçao em desenvolvimento as vezes funciona, e em cliente nao visualiza.
Nao sei se estou usando o getRealPath() e é isso que está causando o erro…
Estou com todas as libs do IReport na aplicaçao e o meu .war está sendo compilado com o .jasper dos relatorios junto, ou seja, está indo pro cliente tudo, preciso ter o IReport instalado no cliente? ou preciso ter os relatorios separados no cliente??
Alguma dica para como resolver esse problema??