Merhaba,
Kaldığımız yerden devam ediyoruz. Netbeans te bir Maven projesi açıyoruz. Buradaki şekilde devam ederek PrimeFaces Crud sayfalarını oluşturuyoruz. Tabiki tek fark veritabanının Derby değilde Mysql olmasıdır.
Oluşturmuş olduğumuz projede WEB-INF in altına report diye bir klasör oluşturuyoruz. Ireport'ta oluşturmuş olduğumuz derlenmiş country_city.jasper dosyasını report klasörüne yapıştırıyoruz. Son görünüm bu şekilde olacak.
Projeye apache-poi ve jasperreport jarlarını eklememiz gerekiyor. Maven projesi için
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
ReportController.java dosyasını oluşturuyoruz.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.kurtomerfaruk.primefacesjasperreport.controllers;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.HashMap;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.naming.InitialContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
/**
*
* @author Omer Faruk KURT
* @Created on date 05/12/2016 12:14:12
*/
@ManagedBean
public class ReportController implements java.io.Serializable {
private static final long serialVersionUID = -1061521806010349020L;
public void yazdir(Integer id) {
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
String reportPath = facesContext.getExternalContext().getRealPath("/report") + File.separator;
String fileName = "country_city.jasper";
HashMap parameterMap = new HashMap();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
fileName = reportPath + fileName;
File file = new File(fileName);
InputStream reportStream = new BufferedInputStream(new FileInputStream(file));
parameterMap.put("country_id", id);// parametremize deger atiyoruz
//parameterMap.put("SUBREPORT_DIR", reportPath);// parametremize deger
InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource) initialContext.lookup("jdbc/sakila");
Connection conn = dataSource.getConnection();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"rapor.pdf\"");
ServletOutputStream servletOutputStream = response.getOutputStream();
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap, conn);
facesContext.responseComplete();
} catch (JRException jr) {
jr.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Şimdi country\List.xhtml dosyasına command button ekliyoruz.
<p:commandButton id="printButton" actionListener="#{reportController.yazdir(countryController.selected.countryId)}" icon="ui-icon-print" value="Print" ajax="false" disabled="#{empty countryController.selected}"/>
Sorunsuz javalı günler :)
Part - 1
Part - 2
Sorunsuz javalı günler :)
0 Yorumlar