Java 为什么在jasper报告中使用存储过程时会得到空页?

Java 为什么在jasper报告中使用存储过程时会得到空页?,java,jasper-reports,Java,Jasper Reports,我正在使用存储过程生成pdf报告。然而,若我不使用存储过程,它将毫无问题地工作,但当我使用存储过程时,我将得到一个空页面。 我在下面发布我的代码,我的代码有问题吗 public void PDFDiploma(ActionEvent actionEvent) throws JRException, IOException, SQLException { String reportPath = FacesContext.getCurrentInstance()

我正在使用存储过程生成pdf报告。然而,若我不使用存储过程,它将毫无问题地工作,但当我使用存储过程时,我将得到一个空页面。 我在下面发布我的代码,我的代码有问题吗

public void PDFDiploma(ActionEvent actionEvent) throws JRException,
        IOException, SQLException {

    String reportPath = FacesContext.getCurrentInstance()
            .getExternalContext()
            .getRealPath("/WEB-INF/report/Diploma.jasper");

    Authentication auth = SecurityContextHolder.getContext()
            .getAuthentication();
    String name = auth.getName();

    System.out.println("user name : :: : ::  : :: " + name);

    Connection conn;
    conn = DatabaseEngine.getConnection();

    System.out.println("Connection : " + DatabaseEngine.getConnection());

    Map jasperParameter = new HashMap();

    KpLoginDAO kpLoginDAO = new KpLoginDAO();
    KpLogin kpLogin = kpLoginDAO.findById(name);
    Long loginUserID = null;

    loginUserID = kpLogin.getKisi().getKisiid();

    Short prmOgrenciDuzey = (Short) actionEvent.getComponent()
            .getAttributes().get("prmOgrenciDuzey");
    Long prmKisiid = (Long) actionEvent.getComponent().getAttributes()
            .get("prmKisiid");

    Long prmOgrenimsureci = (Long) actionEvent.getComponent()
            .getAttributes().get("prmOgrenimsureci");

    String prmBelgeTuru = (String) actionEvent.getComponent()
            .getAttributes().get("prmBelgeTuru");

    System.out.println("loginUserID : " + loginUserID
            + " prmOgrenimsureci : " + prmOgrenimsureci
            + " prmBelgeTuru : " + prmBelgeTuru);

    System.out.println("prmOgrenciDuzey : " + prmOgrenciDuzey
            + " prmKisiid : " + prmKisiid + " prmOgrenimsureci : "
            + prmOgrenimsureci + " prmBelgeTuru : " + prmBelgeTuru);

    /*
     * VerilenbelgeDAO verilenBelgeDAO = new VerilenbelgeDAO(); Verilenbelge
     * verilenbelge = verilenBelgeDAO.findById(Long
     * .parseLong(prmBelgeTuru));
     * 
     * addAction(prmOgrenimsureci, loginUserID, verilenbelge);
     */

    String jrxmlFile = FacesContext.getCurrentInstance()
            .getExternalContext()
            .getRealPath("/WEB-INF/report/Diploma.jrxml");

    HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext
            .getCurrentInstance().getExternalContext().getRequest();

    JasperReport jasperReport = JasperCompileManager
            .compileReport(jrxmlFile);

    jasperParameter.put("v_KISIID", prmKisiid);
    jasperParameter.put("v_OGRENCIDUZEYI", prmOgrenciDuzey);
    jasperParameter.put("v_OGRENIMSURECIID", (long) 15220);
    System.out.println("---------------CON----------- : " + conn);
    jasperPrint = JasperFillManager.fillReport(reportPath, jasperParameter,
            conn);
    System.out
            .println("----------jasperprint------------ : " + jasperPrint);

    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext
            .getCurrentInstance().getExternalContext().getResponse();
    httpServletResponse.addHeader("Content-disposition",
            "attachment; filename=Diploma.pdf");
    ServletOutputStream servletOutputStream = httpServletResponse
            .getOutputStream();
    // JasperRunManager.runReportToPdfStream(reportStream,
    // servletOutputStream, jasperParameter, conn);
    JasperExportManager.exportReportToPdfStream(jasperPrint,
            servletOutputStream);

    FacesContext.getCurrentInstance().responseComplete();

}

您应该只使用一个使用存储过程的字段来提供更简单的代码。为什么不使用view呢?我需要使用3个变量,因为我认为数据源是空的,所以我的页面是空的,但是当你查看我的代码时,你可以看到conn变量是定义的。你能在报告中写出你的参数来检查它是否正确发送吗?或者你能在数据库中看到你最后的查询吗?谢谢你的帮助,问题解决了,是关于参数的