在尝试使用Java打印JasperReports报告时,Tomcat Apache Server在尝试再次查看报告时正在关闭

时间:2014-01-06 07:04:44

标签: java tomcat jasper-reports struts

我正在尝试使用 JasperReports 在我的项目中创建报告。

我已经生成了.jrxml文件。之后我创建了前端(表单),点击“提交”后,我需要打印报告。单击“提交”按钮,我在Action类中调用以下代码( Struts 1.2 ),

if (actionForm.get("hiddenAction").toString().equalsIgnoreCase("Submit")) {
    try {
        //DataBase
        connection = ConnectionHelper.getUniqueInstance().getConnectionFromPool();
        Map<String, Object> parameters = new HashMap<String, Object>();

        String report = "E:\\Report\\RP_BI_SUCCESS.jrxml";

        String fromStrDate = "01/12/2013";
        String toStrDate = "25/12/2013";

        parameters.put("I_SPMID", 0);
        parameters.put("I_GATEWAYLKUPID", 0);
        parameters.put("I_FROMDATE", Utilities.convertStringDateToSQLDate(fromStrDate));
        parameters.put("I_TODATE", Utilities.convertStringDateToSQLDate(toStrDate));
        parameters.put("I_MODE", "A");
        try {
            JasperReport jr = JasperCompileManager.compileReport(report);

            JasperPrint jasperPrint = JasperFillManager.fillReport(jr, parameters, connection);

            JasperViewer.viewReport(jasperPrint);
            jasperPrint = null;
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

为了进行设置,我在项目的一个文件夹中使用了 JasperReports 5.5.0 (可执行的JAR文件)。

案例1: 当我点击“提交”按钮时,我能够获得 JasperViewer 窗口,其中包含我想要的必要报告。然后,如果我关闭报告, Tomcat Apache服务器 Tomcat Apache V 7.0 )将自动关闭。

案例2: 但是,如果我再次点击“提交”而不关闭之前打开的报告,那么就可以了。

有谁可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:0)

尝试替换

Jasper.viewReport(jasperPrint)

通过

JasperViewer jasperViewer = new JasperViewer(jasperPrint, false, null);

jasperViewer.setVisible(真);

它对我来说在Tomcat中运行得很好,而Glassfish却没有。