Bom dia pessoal, hj me deparei com um erro que não sei o pq … tenho 2 aplicações … e utilizo relatorio utilizando o iReport.
Em uma funfa que é uma blz … porem na outra ocorre o erro da imagem em anexo.
Tentei utilizar o Attach Source … mesmo assim não funfou …
Segue meu codigo
[code]package lojanet.ManagedBeans;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import lojanet.controle.ControleFactory;
import lojanet.entidades.Loja;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
@ViewScoped
@ManagedBean(name = “relvendaBean”)
public class RelVendasBean {
public StreamedContent getSampleReportPDF() {
InputStream relatorio = null;
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream stream = ((ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext())
.getResourceAsStream("/relatorios/relVendas.jasper");
List<Loja> listaAlunos = new ArrayList<Loja>();
listaAlunos = ControleFactory.getInstance().getLojaControle().lstLoja();
JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(
listaAlunos);
HashMap<String, Object> params = new HashMap<String, Object>();
JasperPrint print = JasperFillManager.fillReport(stream, params,
datasource);
JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();
relatorio = new ByteArrayInputStream(out.toByteArray());
} catch (JRException ex) {
ex.printStackTrace();
}
return new DefaultStreamedContent(relatorio);
}
public void imprimeRelatorio() throws IOException, SQLException {
List<Loja> listaAlunos = new ArrayList<Loja>();
listaAlunos = ControleFactory.getInstance().getLojaControle().lstLoja();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
listaAlunos);
@SuppressWarnings("rawtypes")
HashMap parameters = new HashMap();
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.responseComplete();
ServletContext scontext = (ServletContext) facesContext
.getExternalContext().getContext();
@SuppressWarnings("unchecked")
JasperPrint jasperPrint = JasperFillManager.fillReport(
scontext.getRealPath("/relatorios/relVendas.jasper"), parameters,
ds);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
if (bytes != null && bytes.length > 0) {
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-disposition",
"inline; filename=\"relatorioPorData.pdf\"");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
E abaixo a imagem em anexo.
Vlwww pessoal.
