Java Jasper报告未在浏览器上显示pdf,在控制台上未显示错误

Java Jasper报告未在浏览器上显示pdf,在控制台上未显示错误,java,servlets,jasper-reports,pdf-generation,Java,Servlets,Jasper Reports,Pdf Generation,这是我的Java类代码的一个片段 案例1 request=ServletActionContext.getRequest(); response = ServletActionContext.getResponse(); if(response!=null) System.out.println("Response is not null"); System.out.println("

这是我的Java类代码的一个片段

案例1

    request=ServletActionContext.getRequest();
            response = ServletActionContext.getResponse();
            if(response!=null)
                System.out.println("Response is not null");
            System.out.println("coming to this method");
            inputStream= this.getClass().getClassLoader().getResourceAsStream("com/ram/report/jasper/Report.jrxml");
            JasperReport jasperReport=JasperCompileManager.compileReport(inputStream);
            HashMap<String, Object> params = null;

            JasperPrint jp=JasperFillManager.fillReport(jasperReport, params,new JRBeanCollectionDataSource(list));
            JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, new File("").getAbsolutePath()+"/UserReport.pdf");
            exporter.exportReport();
            File file = new File(new File("").getAbsolutePath()+"/UserReport.pdf"); 

            inputStream  = new FileInputStream(file);
            response.flushBuffer();
            System.out.println("Made report");
            return "ajaxReturn";
        }
request=ServletActionContext.getRequest();
response=ServletActionContext.getResponse();
if(响应!=null)
System.out.println(“响应不为空”);
System.out.println(“使用此方法”);
inputStream=this.getClass().getClassLoader().getResourceAsStream(“com/ram/report/jasper/report.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(inputStream);
HashMap参数=null;
JasperPrint jp=JasperFillManager.fillReport(jasperReport,params,新的JRBeanCollectionDataSource(list));
JRExporter=new net.sf.jasperreports.engine.export.JRPdfExporter();
exporter.setParameter(jreporterParameter.JASPER_PRINT,jp);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,新文件(“”.getAbsolutePath()+“/UserReport.pdf”);
出口商。出口报告();
File File=新文件(新文件(“”.getAbsolutePath()+“/UserReport.pdf”);
inputStream=新文件inputStream(文件);
response.flushBuffer();
系统输出打印(“制作报告”);
返回“ajaxReturn”;
}
案例2

request=ServletActionContext.getRequest();
                response = ServletActionContext.getResponse();
                if(response!=null)
                    System.out.println("Response is not null");
                System.out.println("coming to this method");
                inputStream= this.getClass().getClassLoader().getResourceAsStream("com/ram/report/jasper/Report.jrxml");
                JasperReport jasperReport=JasperCompileManager.compileReport(inputStream);
                HashMap<String, Object> params = null;

                JasperPrint jp=JasperFillManager.fillReport(jasperReport, params,new JRBeanCollectionDataSource(list));
                JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
                exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, new File("").getAbsolutePath()+"/UserReport.pdf");
                exporter.exportReport();
                File file = new File(new File("").getAbsolutePath()+"/UserReport.pdf"); 

                inputStream  = new FileInputStream(file);
                ServletOutputStream op = response.getOutputStream();
                response.setContentType("application/pdf");
                response.setHeader("Content-Disposition",
                        "application; filename=\"" + "UserReport.pdf");
                byte[] bbuf = new byte[50000];
                int length=0;
                while ((inputStream != null) && ((length = inputStream.read(bbuf)) != -1)) {
                    op.write(bbuf, 0, length);
                }
                op.flush();
                op.close(); 
                response.flushBuffer();
                System.out.println("Made report");
                return "ajaxReturn";
            }
request=ServletActionContext.getRequest();
response=ServletActionContext.getResponse();
if(响应!=null)
System.out.println(“响应不为空”);
System.out.println(“使用此方法”);
inputStream=this.getClass().getClassLoader().getResourceAsStream(“com/ram/report/jasper/report.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(inputStream);
HashMap参数=null;
JasperPrint jp=JasperFillManager.fillReport(jasperReport,params,新的JRBeanCollectionDataSource(list));
JRExporter=new net.sf.jasperreports.engine.export.JRPdfExporter();
exporter.setParameter(jreporterParameter.JASPER_PRINT,jp);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,新文件(“”.getAbsolutePath()+“/UserReport.pdf”);
出口商。出口报告();
File File=新文件(新文件(“”.getAbsolutePath()+“/UserReport.pdf”);
inputStream=新文件inputStream(文件);
ServletOutputStream op=response.getOutputStream();
response.setContentType(“application/pdf”);
response.setHeader(“内容处置”,
“应用程序;文件名=\”“+”UserReport.pdf”);
字节[]bbuf=新字节[50000];
整数长度=0;
而((inputStream!=null)&&((length=inputStream.read(bbuf))!=-1)){
op.write(bbuf,0,长度);
}
op.flush();
op.close();
response.flushBuffer();
系统输出打印(“制作报告”);
返回“ajaxReturn”;
}
这是我的行动

<action name="reportData" class="Reportfetchnew">
<interceptor-ref name="cookie"></interceptor-ref>
 <interceptor-ref name="cookieProvider"></interceptor-ref>
 <interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">htdocs/jsp/report_new/report_tool.jsp</result>
 <result name="ajaxReturn" type="stream" >
    <param name="contentType">application/pdf</param>
    <param name="contentDisposition">attachment;filename="UserReport.pdf"</param>
    <param name="bufferSize">1024</param>
    <param name="inputName">inputStream</param>

    </result>

htdocs/jsp/report\u new/report\u tool.jsp
申请表格/pdf
附件;filename=“UserReport.pdf”
1024
输入流
我面临的问题是,尽管Eclipse控制台上没有显示错误,但pdf根本不显示在浏览器上
在检查了几个链接之后,我想到了镜像到outputStream,所以我做了案例2。但是它给出了相同的结果。此外,“制作了报告“也正在打印,这意味着文件是在两种情况下创建的。那么这里的错误到底是什么呢?

ajaxReturn
->您是从ajax调用此操作的吗?重点是什么?我正在从jsp向java类发出一个ajax调用。Java类负责生成报告并在成功时返回“ajaxReturn”。只需调用您的操作,而不是从ajax中调用。@AleksandrM我不明白,先生。请解释一下好吗?就像我有一个输入日期范围和一个按钮。当我点击按钮时,我需要报告。为什么我不能使用ajax?ajax调用的主要原因是尝试添加报表表。但是现在,我陷入了pdf生成部分本身。
ajaxReturn
->您是从ajax调用此操作的吗?重点是什么?我正在从jsp向java类发出一个ajax调用。Java类负责生成报告并在成功时返回“ajaxReturn”。只需调用您的操作,而不是从ajax中调用。@AleksandrM我不明白,先生。请解释一下好吗?就像我有一个输入日期范围和一个按钮。当我点击按钮时,我需要报告。为什么我不能使用ajax?ajax调用的主要原因是尝试添加报表表。但现在,我被困在pdf生成部分本身。