jasper reports ile pdf raporları oluşturuyorum

çıktı aldığımda java.lang.IllegalStateException: getOutputStream() has already been called for this response hatası fırlatılıyor

araştırdığımda kodu try catch blokları arasına almak tavsiye edilmiş benim kodum da tray catch blokları arasında ancak bu hata sürekli fırlatılıyor

public void printPDF() {
    ServletOutputStream servletOutputStream = null;
    try {

        JRBeanCollectionDataSource jrbeanCollectionDataSource = new JRBeanCollectionDataSource(elementList);
        print = JasperFillManager.fillReport("C:\\\\test.jasper", new HashMap(), jrbeanCollectionDataSource);
        HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        servletOutputStream = httpServletResponse.getOutputStream();
        JasperExportManager.exportReportToPdfStream(print, servletOutputStream);

    } catch (JRException ex) {
        Logger.getLogger(testDAO.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(testDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            servletOutputStream.close();
        } catch (IOException ex) {
            Logger.getLogger(testDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

soruldu: 05 Haz '12, 06:39

lazy's gravatar image

lazy
146171724
cevap kabul oranı: 0%

değiştirildi: 05 Haz '12, 06:55

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

"C:\" ye yazma yetkin var mı? Loglar belki daha fazla bilgi verebilir...

(05 Haz '12, 16:18) SaRPaRDa SaRPaRDa's gravatar image

Acik kaynak tekir ticari set projesinde Jasper Reports pdf ve diger export formatlarinda kullaniliyor. Tekir JSF + JBoss Seam + JPA + Hibernate ile yaziliyor. Ordaki kodlar isine yarayabilir. Kaynak kodlari burda

JasperHandlerBean.java jasper export islemlerini kolaylastirmak icin yazilmis. JasperHandlerBean'in cagrildigi yerlere bakarsan tam aradigin cozumu bulabilirsin.

permanent link

cevaplandı: 05 Haz '12, 07:50

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

teşekkür ederim

(05 Haz '12, 09:59) lazy lazy's gravatar image

Merhaba, belirtmemişsiniz ama projenizin JSP sayfaları üzerinde JSF( view handler olarak JSP) kullanarak oluşturduğunuzu düşünüyorum.

sıkıntınızın aynı zamanda text ve hem binary datayı aynı response üzerine yazmanızdan kaynaklanıyor.

siz getOutputStream() ile binary datanızı response'a yazarken JSP handler de JspWriter ile sayfadaki text dataları response'a yazmasıdır. Aynı anda sadece birini kullanabilirsiniz.

eğer Facelet teknolojisini kullanırsanız(JSF 2.x default gelir yada jsf 1.2.x ile siz ekleyebilirsiniz) bu sorunla uğraşmazsınız.

bir çözüm pdf in görüntüleneceği sayfa üzerinde hiçbir text data ,dinamik yada statik, bulunmamasıdır.bu şekilde JspWriter devreye girmeyecektir.

diğer bir çözüm Servlet kullanmaktır. bununla ilgili kaynakları internetten bulabilirsiniz.

permanent link

cevaplandı: 06 Haz '12, 08:46

etahan's gravatar image

etahan
161
cevap kabul oranı: 0%

merhaba jsp kullanmıyorum facelets kullanıyorum

(12 Haz '12, 05:34) lazy lazy's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×11
×5

Soruldu: 05 Haz '12, 06:39

Görüntüleme: 1,268 kez

Son güncelleme: 12 Haz '12, 05:34

powered by BitNami OSQA