Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java Primefaces中的Jasper报表集成_Java_Jsf_Primefaces_Jasper Reports - Fatal编程技术网

Java Primefaces中的Jasper报表集成

Java Primefaces中的Jasper报表集成,java,jsf,primefaces,jasper-reports,Java,Jsf,Primefaces,Jasper Reports,我正在发布一个代码片段,它在其他表单上运行良好,可以将Jasperreport打印为Pdf格式 <p:commandButton id="cmdPrint" value="Print" actionListener="#{receiptMB.print()}" disabled="#{receiptMB.chkSave == false}" process="@this" /> 上面的代码在其他表单上运行良好,但在特定的对话框表单中不起作用。它没有给出错误,但也没有

我正在发布一个代码片段,它在其他表单上运行良好,可以将Jasperreport打印为Pdf格式

<p:commandButton id="cmdPrint" value="Print"
    actionListener="#{receiptMB.print()}"
    disabled="#{receiptMB.chkSave == false}" process="@this" />
上面的代码在其他表单上运行良好,但在特定的对话框表单中不起作用。它没有给出错误,但也没有给出任何输出。
我提出了一些解决方案,但没有工作。

不应该使用ajax请求来生成输出。在命令按钮上设置
ajax=“false”
,我将尝试并报告。设置“ajax=“false””没有调用打印方法。那么肯定是其他错误(在
禁用的
属性和一般转换/验证错误之间)。使用非ajax命令按钮不是可选的。看到这个答案了吗?我添加了immediate=“true”,它起作用了。
public void print(){

        try
        {
        JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(getObjPrintList());

        String  reportPath=  FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/Receipt.jasper");     

        JasperPrint jasperPrint=JasperFillManager.fillReport(reportPath,getReportParameters(), beanCollectionDataSource);  

        HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        httpServletResponse.setContentType("application / pdf");
        httpServletResponse.addHeader("Content-disposition", "inline; filename=Receipt_" +objPrint.getDateNp()+".pdf");
        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();

        servletOutputStream.write(JasperExportManager.exportReportToPdf(jasperPrint));
        servletOutputStream.flush();
        servletOutputStream.close();
        FacesContext.getCurrentInstance().renderResponse();
        FacesContext.getCurrentInstance().responseComplete();
        }
        catch(JRException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }