Boa noite,
estou com meu sistema pronto, agora quero fazer as partes de relatorios.
consegui mexer perfeito no jasper criei a base dos relatorios.
mas como faço para o botão imprimir do meu sistema jogar para o relatorio feito em jasper?
desculpe se a pergunta é tola mas estou aprendendo tudo sozinho.
luxu
Março 6, 2012, 10:42pm
#2
Faço assim, deve ter outros melhores mas…
página:
<h:form id="formPrincipal">
<p:fieldset legend="Relatório">
<p:commandButton value="Imprimir" ajax="false"
actionListener="#{cargoBean.relatorioGeral}"
onclick="this.form.target='_blank'"/>
</p:fieldset>
</h:form>
método no MB:
public void relatorioGeral() throws IOException {
InterfaceDAO<Cidade> dao = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
List<Cidade> listas = new ArrayList<Cidade>();
listas = dao.getBeans();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listas);
Map<Object,Object> parameters = new HashMap<Object, Object>();
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.responseComplete();
ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
String logoStudio = FacesContext.getCurrentInstance().getExternalContext().getRealPath("images/Studio.png");
parameters.put("logoStudio", logoStudio);
JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getRealPath("jasper/relatorioCidade.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=\"relatorioCidades.pdf\"");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Fexx
Março 7, 2012, 6:16am
#3