Netbeans PrimeFaces JSF JPA Ireport with parameter Part-2


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 :)

Yorum Gönder

0 Yorumlar