Я использую список массивов jsf для получения записей по некоторым критериям.Теперь я хочу, чтобы содержимое этого списка массивов было напечатано через отчет Jasper.Я выполнил следующие шаги.
- Использовал пустой источник данных в отчете Jasper.
- Создал поля в отчетах Jasper как поля из моих свойств бина.
- Затем я скомпилировал отчетв employeeList.jasper и поместил его в мою папку / reports /employeeReports/employeeList.jasper в проекте jsf (я используюEclipse).
Затем я использовал следующий код, чтобы заполнить и показать отчет в формате PDF
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(this.srchdEmployeesList);
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response =
(HttpServletResponse) facesContext.getExternalContext().getResponse();
HashMap parameterMap = new HashMap();
JasperFillManager.fillReportToFile("/reports/employeeReports/employeeList.jasper", parameterMap, dataSource);
InputStream reportStream = facesContext.getExternalContext().getResourceAsStream("/reports/employessReports/employeeList.jasper");
ServletOutputStream servletOutputStream = response.getOutputStream();
Class.forName("oracle.jdbc.driver.OracleDriver");
Session hibernateSession = null;
hibernateSession = HibernateUtils.currentSession();
connection = hibernateSession.connection();
facesContext.responseComplete();
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;");
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap, connection);
connection.close();
servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
Я получаю следующее сообщение об ошибке, и отчет не отображается
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \reports
\employeeReports\employeeList.jasper
Caused by: java.io.FileNotFoundException: \reports\employeeReports
\employeeList.jasper ... 34 more
Помощь в этом отношении будет принята с благодарностью.Связки спасибо заранее.