gpt4 book ai didi

java - 如何在ireport中执行主报表时编译子报表?

转载 作者:行者123 更新时间:2023-12-01 16:02:49 27 4
gpt4 key购买 nike

我正在尝试从 java 即时编译子报告。我将子报表表达式放置在主报表中,如下所示。

<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[SubReportCompiler.getCompiledReport("reportId")]]></subreportExpression>

我的子报表编译器代码如下:

公共(public)类 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 动态编译子报表?

最佳答案

SubReportCompiler类放在哪里?它是否放置在应用程序 Java 包中的某个位置?如果是,您应该在 JRXML 中指定完全限定的类名:

<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[mypackage.SubReportCompiler.getCompiledReport("reportId")]]></subreportExpression>

将上面代码中的“mypackage”替换为您的包名称。

关于java - 如何在ireport中执行主报表时编译子报表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com