Já procurei esse erro aqui no GUJ e tem vários tópicos, porém em nenhum deles consegui resolver meu problema.
1- uso NetBeans com o plug-in do iReport. iReport-3.7.6-plugin
2- no netbeans eu tenho um relatório com apenas um Static Text, só pra teste…
3- no netbeans eu tenho essa classe com o método:
import java.io.IOException;
import java.io.InputStream;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperRunManager;
/**
*
* @author Alan
*/
@ManagedBean
public class RelatorioBean {
public void relatorioUsuario() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o arquivo .jasper
InputStream reportStream = context.getExternalContext().getResourceAsStream("relatorios/usuarios.jasper");
int a = 0;
try {
a = reportStream.read();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//só pra ve se ta lendo o relatório
System.out.println("tamanho:" + a);
}
//envia a resposta com o MIME Type PDF
response.setContentType("application/pdf");
//força a abertura do download no navegador
response.setHeader("Content-disposition", "attachment;filename=relatorio.pdf");
try (ServletOutputStream servletOutputStream = response.getOutputStream()) {
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, null);
// servletOutputStream.flush();
} catch (Exception e){
System.out.println("erro: ");
System.out.println(e);
}
context.responseComplete();
}
}
4- quando eu chamo esse método ai, aparece o erro:
[quote]tamanho:172
erro:
net.sf.jasperreports.engine.JRException: Error loading object from InputStream[/quote]
5- no jsf, xhtml, aparece o download do arquivo, mais ele vem com 0kb
6- em anexo ta uma print das libs do projeto… não foi preciso usar as libs do ireport, acredito que ja veio com o plug-in…
alguem sabe oq to fazendo de errado?
se é meu código, ou problema com lib?
huaehw sempre assim, quando eu vejo que não tem + solução, depois de ontem o dia intero e a noite intera mexendo nisso, resolvi posta aqui agora…
e consegui resolve parcialmente…
ele ta gerando agora um relatorio em branco com 1KB
se alguem souber oq to faezendo de errado posta ai por favor…
segue a modificação no método:
[code] public void relatorioUsuario() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o arquivo .jasper
InputStream reportStream = context.getExternalContext().getResourceAsStream("relatorios/usuarios.jasper");
//envia a resposta com o MIME Type PDF
response.setContentType("application/pdf");
//força a abertura do download no navegador
response.setHeader("Content-disposition", "attachment;filename=relatorio.pdf");
try (ServletOutputStream servletOutputStream = response.getOutputStream()) {
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, null);
// servletOutputStream.flush();
} catch (Exception e){
System.out.println("erro: ");
System.out.println(e);
}
context.responseComplete();
}[/code]
e ai alguem tem idéia doq seja?
estou com um relatório com apenas um static text, pra teste… e ta saindo em branco o pdf
meu método ta assim:
[code] public void relatorioUsuario() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)
context.getExternalContext().getResponse();
//pega o arquivo .jasper
InputStream reportStream =
context.getExternalContext().getResourceAsStream("/relatorios/usuarios.jasper");
//envia a resposta com o MIME Type PDF
response.setContentType("application/pdf");
//força a abertura do download no navegador
response.setHeader("Content-disposition", "attachment;filename=relatorio.pdf");
try (ServletOutputStream servletOutputStream = response.getOutputStream()) {
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, null, new JRBeanCollectionDataSource(null, false));
servletOutputStream.flush();
} catch (Exception e) {
System.out.println("erro: ");
System.out.println(e);
}
context.responseComplete();
}
[/code]
Seu dataSource está vazio. Muito provavelmente teu relatório está com a propriedade “When No Data” setada para “Blank Page”.
O Jasper precisa de um dataSource preenchido; caso contrário, o máximo que você pode fazer é imprimir tudo, exceto o detail.
Abraço!
cara deu certo
vc eh um gênio hauauha
vlw
agora ta pelo menos vindo como “null”, tpow só falta passa os parâmetros
agora eh tetinha
vlw em
antigamente tava vindo a página toda em branco… sem nada… nem os risco que coloquei pra testa hauhaha
aheuieahiuehauiae
Deu pra rir com a tua resposta aqui! haha
Valeu, cara, boa sorte ae! Qualquer coisa, só postar.
Abraço!
hauwehu vlw mesmo, agora ta aparecendo pelo menos o titulo
- os campos estão vindo “null”
uma pergunta, eu tenho q passa uma conexão pro relatorio?
pq assim, quando eu clico em “preview” no relatório, aparece os dados certim…
… porém quando eu chamo ele no meu xhtml, ele vem como “null” os dados…
eu tenho q passar uma conexão?
pq na verdade, eu não vo precisa passa parâmetro algum…
basicamente esse “relatório”, na verdade, só vai pega uma tabela (entidade) e faze um select * from tabela
pelo q eu pesquisei na internet ta faltando eu passa a conexão do banco… seria isso mesmo??
o ruim é que eu só to axando pra desktop (swing) e ta meio estranho… e com dao… to usando hibernate, será que tem um jeito mais fácil do que passar a string do banco, login, senha e talz, td denovo?
ahh pelo q vi eh aki
eu tenho q passa uma connection
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, null, con);
eu só nao sei como fazer essa linha:
usando o método correto do hibernate
Connection con = (Connection) new Persistencia().getEntityManagerFactory();
alandiniz já vi que você é iniciante no jasperReport, dá uma olhada nesse tutorial aqui, ele é muito bom também trabalha com o plugin do Ireport no Netbeans e explica passo a passo como criar os relatórios. Ele foi de grande ajuda quando iniciei na criação de relatórios.
vlw amigo…
consegui fazer funcionar… passei a Connection e funciono
- tenho certeza q to fazendo POG… rsrs
Alan, o negócio é que tua query está fixa dentro do layout; então ele vai mesmo precisar de uma conexão pra poder funcionar.
Se tu tá usando hibernate, uma boa opção é fazer a busca com ele e usar um JRBeanCollectionDataSource. E não tem nada de POG nisso, fica frio! hehe
Abraço!
eh intão, eu achei que os dados da configuração ficava no relatório… mais nao fica nao rsrs…
ai eu passei a conexão deu certo…
- agora ta filé, ja da pra apresenta o TCC com um “relatório” q faz “select * from entidade”
[quote=leoramos]Seu dataSource está vazio. Muito provavelmente teu relatório está com a propriedade “When No Data” setada para “Blank Page”.
O Jasper precisa de um dataSource preenchido; caso contrário, o máximo que você pode fazer é imprimir tudo, exceto o detail.
Abraço![/quote]
Fala leoramos,
poderia me dizer onde eu configuro essa propriedade?
O que devo fazer para priencher o dataSoucer