Во-первых, вы должны проверить путь к шаблону отчета в строке:
InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/FUECReport.jasper");
Может быть, вам следует изменить путь на /WEB-INF/reports/FUECReport.jasper
?Вы можете попытаться проверить доступность файла с помощью java.io
.
. Во втором случае переменная reportStream
должна содержать отчет compiled
.
javadoc не говорит этого для этого метода (вы можете прочитать о параметрах для того же метода с другой подписью ), но вы можете просмотреть исходный код этого метода:
runReportToPdfStream
public static void JasperRunManager.runReportToPdfStream(java.io.InputStream inputStream,
java.io.OutputStream outputStream,
java.util.Map<java.lang.String,java.lang.Object> parameters,
JRDataSource jrDataSource)
throws JRException
throws JRException
- Заполняет отчет и отправляет его непосредственно в OutputStream в формате PDF.Промежуточный объект JasperPrint не сохраняется на диске.
Пожалуйста, проверьте свой источник данных - подготовьте другой источник данных и передайте его методу runReportToPdfStream
.
Вы можете использовать JRMapArrayDataSource , образец JRMapArrayDataSource
используя:
Map<String, Object> params = new HashMap<String, Object>();
params.put("Title", "Report title");
Map<String, String> firstRow = new HashMap<String, String>();
firstRow.put("title", "Greatest Hits");
firstRow.put("artist", "Dolly Parton");
firstRow.put("country", "USA");
firstRow.put("company", "RCA");
firstRow.put("price", "9.90");
firstRow.put("year", "1982");
Map<String, String> secondRow = new HashMap<String, String>();
secondRow.put("title", "Still got the blues");
secondRow.put("artist", "Gary Moore");
secondRow.put("country", "UK");
secondRow.put("company", "Virgin records");
secondRow.put("price", "10.20");
secondRow.put("year", "1990");
Object[] data = {firstRow, secondRow};
JRMapArrayDataSource dataSource = new JRMapArrayDataSource(data);
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
JasperExportManager.exportReportToPdfFile(jasperPrint, targetFileName);
Если все будет хорошо, проблема в методе, который вы готовите dataSource.