将日期从Java传递到ireports时发生异常

时间:2018-07-23 06:06:58

标签: java datetime jasper-reports

我已经创建了一个出勤报告,该报告根据开始日期和结束日期运行。在ireports designer中运行良好。 在ireport中,我创建了如下所示的参数。

$P{StartDate}      -->**parameter class** java.util.date
$P{EndDate}        -->**parameter class** java.util.date
$P{Class_startdate}-->**parameter class** java.lang.string
                   -->**value expression**(($P{StartDate} == null || $P{StartDate}.equals("")) ? "" : "AND cdate.curr_classdate >= TO_DATE('" + new java.sql.Date($P{StartDate}.getTime()).toString() + "', 'yyyy-MM-dd')") 
$P{Class_enddate}  -->**parameter class** java.lang.string
                   -->**value expression**(($P{EndDate} == null || $P{EndDate}.equals("")) ? "" : "AND cdate.curr_classdate >= TO_DATE('" + new java.sql.Date($P{EndDate}.getTime()).toString() + "', 'yyyy-MM-dd')") 

当同一报告通过java文件运行时,引发如下所示的异常。

Exceptiionnet.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : ($P{StartDate} == null || $P{StartDate}.equals("")) ? "" : "AND cdate.curr_classdate >= TO_DATE('" + new java.sql.Date($P{StartDate}.getTime()).toString() + "', 'yyyy-MM-dd')"file2application/pdf

我的servlet代码,

  try {
       System.out.println("Start ....");

          String jrxmlFileName = "D:/ForReports/AttendanceReport.jrxml";
          String jasperFileName = "D:/ForReports/AttendanceReport.jasper";
             JasperCompileManager.compileReportToFile(jrxmlFileName, jasperFileName);

           Class.forName("org.postgresql.Driver");

           String dbUrl = "jdbc:postgresql://localhost:5432/openbravo";
           String dbUname = "postgres";
           String dbPwd = "password";
           Class.forName("org.postgresql.Driver");

           Connection conn = DriverManager.getConnection(dbUrl, dbUname, dbPwd);
                      Map<String, Object> map = new HashMap<String, Object>();
          map.put("Course_ID", request.getParameter("param1"));
          map.put("StartDate", request.getParameter("param2"));
          map.put("EndDate", request.getParameter("param3"));
           JasperReport jr = JasperCompileManager.compileReport(jrxmlFileName);
          JasperPrint jp = JasperFillManager.fillReport(jr, map, conn);
          JasperExportManager.exportReportToPdfFile(jp,
              "D:/ForReports/Downloads/" + request.getParameter("param1") + ".pdf");
          System.out.println("Done exporting pdf format to view");
          // JasperViewer.viewReport(jp,false);

          conn.close();

        } catch (Exception e) {
          System.out.print("Exceptiion" + e);
        }

请提出关于如何格式化日期和传递日期的答案。 谢谢你。

0 个答案:

没有答案