提供的java.sql.Connection对象为空

提供的java.sql.Connection对象为空,java,jasper-reports,Java,Jasper Reports,我正在尝试将jrxml文件导出为pdf,但出现以下错误: WARN query.JRJdbcQueryExecuter - The supplied java.sql.Connection object is null. 我只得到一个空白的pdf文件 这是我导出为PDF的方法: public void printReport(ActionEvent event) throws JRException, IOException { String reportPath = FacesC

我正在尝试将jrxml文件导出为pdf,但出现以下错误:

WARN query.JRJdbcQueryExecuter  - The supplied java.sql.Connection object is null.
我只得到一个空白的pdf文件

这是我导出为PDF的方法:

public void printReport(ActionEvent event) throws JRException, IOException {

    String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/test.jrxml");
    JasperReport report = JasperCompileManager.compileReport(reportPath);
    JasperPrint jasperPrint = JasperFillManager.fillReport(report, new HashMap<String, String>());
    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.pdf");
    ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
    FacesContext.getCurrentInstance().responseComplete();
}
public void printReport(ActionEvent事件)引发JREException、IOException{
字符串reportPath=FacesContext.getCurrentInstance().getExternalContext().getRealPath(“/test.jrxml”);
JasperReport report=jaspecompilemanager.compileReport(reportPath);
JasperPrint-JasperPrint=JasperFillManager.fillReport(report,newhashmap());
HttpServletResponse HttpServletResponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
addHeader(“内容处置”,“附件;文件名=report.pdf”);
ServletOutputStream ServletOutputStream=httpServletResponse.getOutputStream();
导出报告topdfstream(jasperPrint,servletOutputStream);
FacesContext.getCurrentInstance().responseComplete();
}
我是jasperreports的新手,所以我有点迷路了。。我必须指定de数据库的连接字符串还是什么?我应该在哪里添加它

顺便说一句,我正在使用JSF2、intellij和maven


谢谢。

我解决了我的问题。。我必须为我的报告指定一个DB连接

Connection conn;
try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    conn = DriverManager.getConnection("jdbc:sqlserver://localhost:55334;databaseName=Frutemu;integratedSecurity=true","","");
} catch (SQLException ex) {
} catch (ClassNotFoundException ex) {

}
然后在此行中添加连接:

JasperPrint jasperPrint = JasperFillManager.fillReport(report, new HashMap<String, String>(), conn);
JasperPrint-JasperPrint=JasperFillManager.fillReport(report,new HashMap(),conn);

如果希望使用Java Bean作为源代码而不是DB连接,可以这样做以避免出现异常:

final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, JRBeanCollectionDataSource(fields));