Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 火狐4&;IE9韩元';t在JSF应用程序中打开生成的JasperReports_Jsf 2_Jasper Reports_Internet Explorer 9_Firefox4 - Fatal编程技术网

Jsf 2 火狐4&;IE9韩元';t在JSF应用程序中打开生成的JasperReports

Jsf 2 火狐4&;IE9韩元';t在JSF应用程序中打开生成的JasperReports,jsf-2,jasper-reports,internet-explorer-9,firefox4,Jsf 2,Jasper Reports,Internet Explorer 9,Firefox4,我正在开发一个JavaEE应用程序(JSF2+richfaces 3.3.3+JasperReports 3.7.1+SSL) 我用chrome测试了我的应用程序,它运行正常。 但在Firefox4(Firefox3可以正常工作)和IE9中,JasperReports生成的pdf不会在新页面中打开: 这是我的密码: <h:form id="forme2" target="_blank"> <h:commandButton

我正在开发一个JavaEE应用程序(JSF2+richfaces 3.3.3+JasperReports 3.7.1+SSL) 我用chrome测试了我的应用程序,它运行正常。 但在Firefox4(Firefox3可以正常工作)和IE9中,JasperReports生成的pdf不会在新页面中打开:

这是我的密码:

<h:form id="forme2" target="_blank">
                    <h:commandButton
                        id="printBtn"
                        image="../IMAGES/print.png"
                        value="Open PDF"
                        action="#{prtf.openPDF}">
                    </h:commandButton>
</h:form>

public String openPDF() {
        // Prepare.
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
        Connection connection = null;
        try {
            connection = getConnection();

            Map parameters = new HashMap();
            parameters.put("num_cpt", cpt.getNumCpt());

            JasperPrint jasperPrint;
                jasperPrint = JasperFillManager.fillReport(new FileInputStream(new File("C:\\JasperReports\\" + "portefeuille" + ".jasper")), parameters, connection);

            JRPdfExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, response.getOutputStream());
            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition", "inline;filename=" + cpt.getLibCpt().replace(" ", "_") + "_Portefeuille.pdf");

            exporter.exportReport();

            response.getOutputStream().flush();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            facesContext.responseComplete();
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }

公共字符串openPDF(){
//准备。
FacesContext FacesContext=FacesContext.getCurrentInstance();
ExternalContext=facesContext.getExternalContext();
HttpServletResponse=(HttpServletResponse)externalContext.getResponse();
连接=空;
试一试{
connection=getConnection();
映射参数=新的HashMap();
parameters.put(“num_cpt”,cpt.getNumCpt());
茉莉花;
jasperPrint=JasperFillManager.fillReport(新文件(“C:\\JasperReports\\”+“Portefuille”+“.jasper”)、参数、连接);
JRPdfExporter exporter=新的JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,jasperPrint);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,response.getOutputStream());
response.setContentType(“application/pdf”);
response.setHeader(“内容处置”、“内联;文件名=“+cpt.getLibCpt().replace”(“,”)+“\u portefueille.pdf”);
出口商。出口报告();
response.getOutputStream().flush();
}捕获(IOEX异常){
例如printStackTrace();
}最后{
facesContext.responseComplete();
试一试{
if(连接!=null){
connection.close();
}
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}
你有什么办法解决我的问题吗


更新1:当我从我的h:form标签中删除属性target=“\u blank”时,它在IE9中工作正常,但在firefox 4中仍然不工作

尝试在导出之前添加以下代码:

response.setHeader("Pragma", "cache"); response.setHeader("Cache-Control", "cache"); setHeader(“Pragma”、“cache”); setHeader(“缓存控制”、“缓存”); 当我遇到与IE类似的问题时,这神奇地帮助了我