Я пытаюсь скомпилировать подотчет на лету из Java.
Я поместил выражение подотчета в ОСНОВНОЙ отчет следующим образом.
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[SubReportCompiler.getCompiledReport("reportId")]]></subreportExpression>
Мой код подотчетного компилятора выглядит следующим образом:
открытый класс SubReportCompiler {
private static final String JR_XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<!DOCTYPE jasperReport PUBLIC \"-//JasperReports//DTD Report Design//EN\" \"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd\">";
public static JasperReport getCompiledReport(String reportId)
{
Report report = Report.getReportObject(reportId, applicationId);
String jasperXML=JR_XML_HEADER + report.getJASPERXML();
InputStream jrXMLStream = new ByteArrayInputStream(jasperXML.getBytes());
JasperReport jReport;
try {
jReport = JasperCompileManager.compileReport(jrXMLStream);
} catch (JRException e) {
throw new ReportException(e.getMessage(), e);
}
catch (Exception e)
{
throw new ReportException(e.getMessage(), e);
}
return jReport;
}
}
пока я пытаюсь выполнить основной отчет из Java. Я получаю следующую ошибку.
(java.lang.String) Нет такого свойства: SubReportCompiler для класса: report2_1280833699753_269232
Нужно ли регистрировать какие-либо свойства? Как скомпилировать подотчет на лету из java при выполнении основного отчета?