【问题标题】:JasperReport exception printJasperReport 异常打印
【发布时间】:2017-01-19 22:43:50
【问题描述】:

我用 JasperReport 制作报告引擎。到目前为止一切正常,但我有点想念。在我的代码中,我试图编译模板文件并返回 JasperReport 对象,如果编译失败,则编译另一个文件并返回错误消息。但由于某种原因它不起作用。这是我的代码:

/**
 * Generates JasperPrint object from the Template file
 * @param Template File Name (String)
 * @param Parameters (Map<String, Object>)
 * @param Collection of Value Objects (Collection, List, ArrayList)
 * @return JasperPrint
 */
private JasperPrint getJRPrint(String tmpltFileLocation, Map<String, Object> params, JRBeanCollectionDataSource dataSource) {
    JasperPrint jrPrint = null;

    log.info("ReportEngine: compiling " + tmpltFileLocation);

    try {
        JasperReport jasperReport = JasperCompileManager.compileReport(tmpltFileLocation);
        jrPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
    } catch (JRException ex) {
        ex.printStackTrace();
        return getErrorJRPrint(ex);
    }

    return jrPrint;
}

private JasperPrint getErrorJRPrint(Exception ex) {
    JasperPrint errJrPrint = null;
    Map<String, Object> errParams = new HashMap<String, Object>();
    errParams.put("errorMessage", ex.getMessage());

    try {
        JasperReport jasperReport = JasperCompileManager.compileReport(reportFolderName + "errReport.jrxml");
        errJrPrint = JasperFillManager.fillReport(jasperReport, errParams);
    } catch (Exception ex2) {
        ex2.printStackTrace();
    }

    return errJrPrint;
}

错误模板文件在那里(我试图删除它,它抱怨文件丢失,所以它可以看到它)。在我的模板文件中,我只是打印错误消息,并且我尝试打印一些静态文本,但它不起作用。可能是什么问题?

【问题讨论】:

  • 您的问题解决了吗?

标签: java exception-handling jasper-reports


【解决方案1】:

我已经尝试过你的代码,没有任何问题。

在您正在打印的报表中,如果您不填写报表查询或发送数据源,报表将始终为空或不打印(取决于您对“无数据时”变量所做的设置)

如果这是问题所在,则将“无数据时”变量设置为打印除详细信息以外的所有部分,并将您的消息放在任何其他波段中。

这是变量:

  jasperReport.WHEN_NO_DATA_TYPE_BLANK_PAGE
  jasperReport.WHEN_NO_DATA_TYPE_NO_PAGES
  jasperReport .WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL

如果您使用 iReport,则更容易更改。

注意:如果您使用 iReport 创建报告,请确保 iReport 使用相同的 JasperReport 库版本。

【讨论】:

    【解决方案2】:

    为什么需要在运行时编译jrxml?您是否尝试过在 iReport 中编译它并通过
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);

    获取 JasperReport 对象

    不管怎样,如果生成了jrxml文件,试试在iReport中编译,看看有没有什么问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多