Thank you very much Jozef

I will try your proposal

Cheers

Henri

-----Original Message-----
From: Jozef Hribik [mailto:[EMAIL PROTECTED] 
Sent: mardi 9 août 2005 13:39
To: MyFaces Discussion
Subject: Re: MyFaces and JasperReport


Hi Henri,
 
1. put commandButton on JSF to call action method of managed bean; the 
PDF will open in new browser window.
<h:form id="yourform" target="_blank">
<h:commandButton styleClass="btn" value="#{msg.btn_pdf}" 
action="#{reportMBean.createPdf}" />

2. and use something like this in your reportMBean

  public String createPdf() {

    FacesContext ctx = FacesContext.getCurrentInstance();
   
    if(!ctx.getResponseComplete()) {
      try {
        String baseDir = getBaseDir(ctx);
        HttpServletResponse response = (HttpServletResponse) 
ctx.getExternalContext().getResponse();
       
        byte[] bytes = buildContent(baseDir);
       
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; 
filename=\"your_report_name.pdf\"");
        response.setHeader("Cache-Control", "max-age=10");
        response.setContentLength(bytes.length);

        OutputStream output = response.getOutputStream();
        output.write(bytes, 0, bytes.length);
        output.flush();
        output.close();
       
        ctx.responseComplete();
      }
      catch(BusinessException ex) {
// our BusinessException handling
        addBusinessExceptionMsg(ex);
        return NAV_SAME_PAGE;
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }
    return null;
  }
 
  // we have all report-files in "/WEB-INF/report/"
  private String getBaseDir(FacesContext ctx) {
    String path = ((ServletContext) 
ctx.getExternalContext().getContext()).getRealPath("/WEB-INF/");
    return path + File.separator + "report" + File.separator;
  }
 
  private byte[] buildContent(String baseDir) throws Exception {
   
    Map parameters = new HashMap();
    parameters.put("ReportTitle", "your_title");
    // etc. put all other needed parameters
    parameters.put("REPORT_RESOURCE_BUNDLE", getResourceBundle());
    parameters.put("REPORT_LOCALE", getResourceLocale());
   
    List dataList = yourBusinessService.getDataForReport(your_parameters);
   
    return JasperRunManager.runReportToPdf(baseDir + 
"your_report_name.jasper",
                                                 parameters,
                                                 new 
JRBeanCollectionDataSource(dataList));
  }
 
Good-luck
Jozef Hribik  

Delbrouck, Henri-Philippe wrote:

> Hi,
>
> Could anybody tell me if it is possible to use JasperReport with 
> MyFaces in order to generate pdf and xls file.
> Is there any documentation about that.
>
> Thanks for any help.
>
> Henri-Philippe Delbrouck
>
>
>
>
>
> __________ Informacia od NOD32 1.1189 (20050808) __________
>
> Tato sprava bola preverena antivirusovym systemom NOD32.
> http://www.eset.sk
>
>
> __________ Informacia od NOD32 1.1189 (20050808) __________
>
> Tato sprava bola preverena antivirusovym systemom NOD32.
> http://www.eset.sk

Reply via email to