有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jasper报告有时显示为空白

我有一个利用Jasper Reports 3.7.6的应用程序,主要用于与应用程序的前身向后兼容(即,以前的应用程序主要用于生成销售证书,但当前的应用程序主要用于生成电子邮件以传达相同的信息)

我的QA人员刚刚指出,当在他的环境中运行时,证书生成功能只会向他显示一个空白网页,我们的开发构建环境也是如此。但是当我在本地机器上运行应用程序时,我得到了预期的PDF文件。有一段时间没有研究过这个功能,也从未对Jasper Reports(这是由另一位几年前离开公司的程序员开发的)如此熟悉,我对如何解决似乎是间歇性问题感到困惑

下面是使用Jasper生成销售证书的代码:

    // filePath verified as set to executable's directory
    String fileName = filePath + "/Certificate.jasper";
    String outFileName = "Certificate" + certObject.getSerial() + ".pdf";


    HashMap hm = new HashMap();
    try 
    {
        if(certObject != null)
        {
            ArrayList<Certificate> certList = new ArrayList();
            certList.add(certObject);

            // Create the print object
            JasperPrint print = JasperFillManager.fillReport(fileName, hm, new JRBeanCollectionDataSource( (ArrayList) certList , true));

            // Create a PDF exporter
            JRExporter exporter = new JRPdfExporter();

            // Set the output file name in the HTTP response                            
            response.setHeader("Content-disposition", 
                                    "attachment; filename=" + outFileName);  

            // Set the print object of the exporter, and set its
            // output stream to be that of the HTTP response object
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);                
            ServletOutputStream outStream = response.getOutputStream();
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outStream);

            // Export the PDF file                
            exporter.exportReport();
        }

    } catch (JRException e) 
    {
        e.printStackTrace();
        System.out.println("JRException: "+e.toString());
    } catch (IOException ioe) {
        ioe.printStackTrace();
        System.out.println("IOException: "+ioe.toString());
    } 

我还应该注意,如果内存和subVersion日志起作用,则此功能以前会将证书PDF写入可执行文件的目录,然后在浏览器窗口中打开该文件。我不记得为什么我改变了功能,除了可能是为了提高效率(也就是说,没有用很多PDF填充目录)。我需要重新回到那样做吗?我真的不想在新应用程序中不太可能用到的东西上投入太多精力,所以如果有人能给我一个简单的解决方案,它将始终如一地工作,我将非常感激


共 (1) 个答案

  1. # 1 楼答案

    尝试更改servlet以接受GET或更改为Chrome

    我在IE上也遇到了同样的问题,当用户单击generate PDF按钮时,IE向Java方法发送帖子,但就在servlet响应PDF输出时,Acrobat插件被加载,这会发送第二条帖子,但这次是GET,我的控制器没有响应GET提交