Olá amigos!
Estou utilizando a seguinte classe para gerar um relatório em pdf com jsf:
public static void imprimir(String relatorio, HashMap<String, Object> parametros, HttpServletResponse response, Connection conexao) {
try {
byte[] arquivo = new byte[0];
Class classpath = new Object().getClass();
URL url = classpath.getResource("/webponto/relatorios/" + relatorio + ".jasper");
JasperReport jasper = (JasperReport) JRLoader.loadObject(url);
JasperPrint print = JasperFillManager.fillReport(jasper, parametros, conexao);
arquivo = JasperExportManager.exportReportToPdf(print);
response.setContentType("application/pdf");
response.setContentLength(arquivo.length);
OutputStream saida = response.getOutputStream();
saida.write(arquivo, 0, arquivo.length);
saida.flush();
saida.close();
} catch (Exception ex) {
System.err.println("O arquivo não foi gerado corretamente!");
ex.printStackTrace();
}
}
Porém a variável url está ficando com valor null.
Como posso resolver isso?
Desde já agradeço!
cara vc ta passando relatorio por parametro,
public static void imprimir(String relatorio,
e escrevendo ele na url como string
URL url = classpath.getResource("/webponto/relatorios/+ relatorio + ".jasper");
tente alterar para
URL url = classpath.getResource("/webponto/relatorios/"+ relatorio + ".jasper");
Obrigado por responder Hudson!
Mas foi um erro na hora de postar, pois eu tinha alterado para testes. Na verdade eu já estou utilizando como em sua correção e está dando o erro. Tem alguma idéia??
É a primeira vez que faço isso e não estou conseguindo resolver, se puder me ajudar de alguma forma lhe agradeço!
Abraço!
Vou corrigir na primeira mensagem…
Pessoal, por favor, alguém sabe como resolver esse problema?
Ainda não consegui resolver…
Desde já agradeço a todos!
[quote=Xande_cf]Pessoal, por favor, alguém sabe como resolver esse problema?
Ainda não consegui resolver…
Desde já agradeço a todos!
[/quote]
a url que colocou acima está completa e correta? porque no caso ele não está achando o endereço, ou está passando algum nome de relatório inexistente.
Está correta e completa sim!
Eu somente consegui fazer exibir o relatório trocando “URL url = classpath.getResource(”/webponto/relatorios/" + relatorio + “.jasper”);" por “URL url = new URL(“file:C:/fechamento3.jasper”);” , trocando o arquivo .jasper de local, é claro. Mas sei que não vai poder ficar assim…
Com o classpath.getResouce não funciona nem por nada! Então, de que outra maneira eu posso fazer?
Obrigado!
Então pessoal, alguma sugestão???
Alguém pode dar uma força?
Então, Xande_cf
você conseguiu resolver esse probelma ?
Estou enfrentando a mesma situação aqui, se você puder postar a solução eu agradeço.
paribe
Abril 17, 2009, 10:41am
#9
utilizo assim ::::
String jasper = request.getContextPath()+ "/report/report/"+nomeRelatorio;
host = "http://" + request.getServerName() + ":" + request.getServerPort();
URL jasperURL = new URL(host + jasper);
response.setContentType(CONTENT_TYPE_PDF);
byte[] bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), parameters, con);
if (bytes != null) {
ops = response.getOutputStream();
ops.write(bytes);
ops.flush();
ops.close();
}