- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
com.hughes.exception.HughesException at com.hughes.service.serviceImpl.HomeServiceImpl.sendTicketEmail(HomeServiceImpl.java:1094) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method).................................................................................................Caused by: net.sf.jasperreports.engine.JRException: Resource not found at : nullinvoiceDetail.jasper at net.sf.jasperreports.repo.RepositoryUtil.getResource(RepositoryUtil.java:155) at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:126) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:317) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:347) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:275) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2021) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) at com.hughes.service.serviceImpl.HomeServiceImpl.sendTicketEmail(HomeServiceImpl.java:1046) ... 81 more
JasperReport jasperReport = JasperCompileManager.compileReport(hdnWebInfPath+seperator+"reports"+seperator+"invoice.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, model, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint, fPath+seperator+fileName);
这在简单报告时有效不适用于子报告...
最佳答案
我的 Jarper 知识已经有几个版本了,但希望这会有所帮助。
这是因为 jasper 没有找到您的子报表。 Jasper 可以编译您的报表,但当您调用 compileReport
时,它不会编译引用的子报表。填写报表时,找不到引用的子报表,因为它们在工作目录中不可用。
(每次请求时都编译报告是一个坏主意(除非您有一些非常重要的理由这样做)。)
有几种方法可以解决这个问题。一是确保路径正确并在应用程序部署之前预编译报告。 Alex K 提供的链接是一个很好的来源。如果需要在应用程序中进行编译,则可以使用以下解决方案:
在网络应用程序中,我发现一种工作实践是处理编译,而填写报告则是手动管理它。这是我写的辅助类。希望它有用(它使用 Spring ,但这些部件很容易更换)。
public class ReportSource {
// Key = document name, Value = path to .jrxml
private Map<String, String> reports;
private final Map<String, JasperReport> compiled;
private final boolean lazy;
private final Logger log = Logger.getLogger(ReportSource.class);
public ReportSource(final boolean lazyBuild) {
super();
lazy = lazyBuild;
compiled = new HashMap<String, JasperReport>();
}
public void setCompileTargets(final Map<String, String> targets) {
reports = new HashMap<String, String>(targets);
if (!lazy) {
for (final String key : targets.keySet()) {
compile(key);
}
}
}
public JasperReport getReport(final String reportName) {
if (compiled.get(reportName) == null) { // not found or not compiled
log.info("Lazily compiling: " + reportName);
return compile(reportName);
}
return compiled.get(reportName);
}
private JasperReport compile(final String reportName) {
final String path = reports.get(reportName);
InputStream fis = null;
JasperReport report = null;
try {
final FileSystemResourceLoader resourceLoader = new FileSystemResourceLoader();
fis = resourceLoader.getResource(path).getInputStream();
log.info("Compiling report: " + reportName + " (" + path + ")");
report = JasperCompileManager.compileReport(fis);
} catch (final IOException ioe) {
throw new IllegalStateException("Configuration error file: " + path + " (for key: " + reportName +") not found.", ioe);
} catch (final JRException jre) {
throw new IllegalStateException("Configuration error file: " + path + " (for key: " + reportName +") not found.", jre);
}
compiled.put(reportName, report);
return report;
}
}
借助此类,您可以在文档中引用子报表,如下所示:
<subreport>
<reportElement x="0" y="0" width="200" height="30"/>
<subreportParameter name="data">
<subreportParameterExpression><![CDATA[$P{data}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="REPORT_RESOURCE_BUNDLE">
<subreportParameterExpression><![CDATA[$P{REPORT_RESOURCE_BUNDLE}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{data}.getSubreport("name_of_your_subreport")]]></subreportExpression>
</subreport>
这里 $P{data}
是作为文档参数提供的合适对象,其中 getSubreport()
最终调用 ReportSource.getReport()
。如果直接提供 ReportSource
作为参数,它当然可以是 $P{reportSource}.getReport("....")
。 (我们使用ReportModel方法;简而言之,它是适合报告上下文的表示模型)。
关于java - Jasper子报告错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598958/
我有一个在旧版 iReport 3.0 中构建的 JRXML 报告,现在我想将其更新到较新的 iReport 4.7。 这样做的步骤是什么,请解释一下? 最佳答案 您可以使用位于 jasperserv
我的问题是,即使该行是空白的,它仍然占据了 band 高度的空间,因此在下一个 band 之前有比平时更大的间隙。 我的 jasper 文件中的乐队看起来像这样:
我在使用 Eclipse JasperReports Studio 时遇到了一个我无法解决的问题。我有一个非常基本的报告,其中包含返回大约 30 行的详细信息字段。我有一个要合并到主报告中的子报告,但
我有一个包含许多列但只有几行的交叉表。当我生成报告时,交叉表会重用一页中行下方的空白空间,并为相同的行呈现下一列。这样,几页被垂直压缩在一页上: 我想要第 天的列20 到天 27 (交叉表的第二部分)
我们正在使用 jaspersoft studio 创建报告,但我被困在查询部分。 从逻辑上讲,我想要的查询类型是: select * from mytable where
我想在 ireport 中创建多个组,并且数据应该以分组方式显示。例如: 首先应该完全打印 Group1 数据,然后, 第一组: 模块数据 在此之后我想完全打印 Group2 数据 组2: 类别数据
我有一个 Jasper 报告,它有一个详细信息部分,在详细信息部分内有一个来自数据库的打印字段。因此,如果我的查询返回 100 行,我会得到 100 行,这会生成一个大约 10 页长的报告,因为 10
我正在使用 Jasper 报告。我有一个页眉、详细信息和摘要带。页眉在所有页面上重复,但有时只有摘要部分移到最后一页,因为详细信息在此之前的页面中结束。标题不打印在最后一页,即摘要页。 有人知道为什么
这个问题在这里已经有了答案: How to pass ArrayList to JasperReports? (3 个回答) 上个月关闭。 如何创建将在详细信息部分迭代 arraylist 的报告,该
我有一个包含两个框架的 columnHeader 带。 如果参数为 TRUE,则第一帧必须可见,如果参数为 FALSE,则第二帧必须可见。 所以我只想显示一帧。 我按顺序放置了两帧。可见性还可以,但是
我在 jasper 报告中有一个表格,我需要该表格中某些单元格的内容垂直对齐。 我正在尝试使用 iReport 编辑报告。 在 iReport 中,我可以进入单元格的属性并看到垂直对齐设置为“中间”。
我正在尝试生成包含表格的报告。这些是 jrxml 的重要部分:
我想为文本字段绘制一个虚线底部边框,以多行显示其内容。 例如: Address: 104th Street, - - - - - - - - - - -- - - - - - - -
我在 Maven 中使用 Jasper Reports 5.2.0 和 Spring MVC。 我已经使用 JasperViewer 完成了报告,但突然出现了无法解决的错误: net.sf.jaspe
我想将图像嵌入到我的JasperReports jrxml文件中。我有这个目录结构。 Tomcat Root webapps reports -->images --> compa
我有三个不同的查询,并希望根据 jasper 报告中获取的值运行它们。查询是在 Jrxml 文件本身中编写的。如何根据不同的动态值运行不同的查询。 喜欢(这只是一个 sudo 代码) If($(a)
以下是一些演示问题的屏幕截图:首先,这是没有列表元素的设计: 这是该报告的结果(注意有两页): 现在如果我添加列表元素,设计如下: 这是摘要带的 jrxml:
我们的一份报告经常运行,其中包含大约 14,000 名司机。 参数的架构(在父报表中)如下所示: 选择(在子报表中)的 where 子句如下所示: and $X{IN, cast(e.l
背景:Jaspersoft studio 6. 有这个交叉表: 交叉表的数据集: select 'prod1' as prod, 'mon1' as month, 1 as val u
我想问一下。如何在 中的段落后添加中断一个文本字段 . 例如, 报告是为传达信息的特定目的而制作的文本作品(通常是写作、演讲、电视或电影)。 像这样:- "A report is a textual
我是一名优秀的程序员,十分优秀!