我正在尝试将一个中等复杂的报告导入我的java应用程序。该报告包括子查询,样式模板(jrtx)和图像。一切都在iReport中运行良好,但是当我尝试在应用程序中运行报表时,它给出了以下错误:
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is net.sf.jasperreports.engine.JRRuntimeException: Error parsing template XML
root cause
net.sf.jasperreports.engine.JRRuntimeException: Error parsing template XML
root cause
org.xml.sax.SAXParseException: Element type "paragraph" must be declared.
我正在使用iReport版本4.0.2(启用4.0.1兼容模式)来开发报告,使用net.sf.jasperreports 4.0.1来运行我的应用程序上的报告。注意:iReport版本与jasperReport版本匹配。
答案 0 :(得分:0)
显然,iReport的4.0.1兼容模式不能100%运行。当弄乱某些属性时,iReport 4.0.2会插入标记。 JasperReport 4.0.1中不存在<paragraph>
标记。如果我在报表中嵌入了任何段落样式而不是样式模板,我会在编译时捕获到它。模板在运行时被考虑。
我转换了我的模板:
From:
<jasperTemplate>
...
<style name="in-detail-fields">
<paragraph leftIndent="3" rightIndent="3"/>
</style>
...
</jasperTemplate>
To:
<jasperTemplate>
...
<style name="in-detail-fields" leftIndent="3" rightIndent="3" />
...
</jasperTemplate>
不幸的是,在更改模板后,iReport 4.0.2无法正确解释模板。 :-(。一个更好的解决方案可能是将iReport降级到正确的版本。