【发布时间】:2016-07-03 05:35:26
【问题描述】:
我正在尝试将开始和结束日期作为参数传递给 jasper 报告,但它无法正常工作。我得到一个空白的 PDF。当我在 SQL 查询本身中硬编码开始和结束日期时,我得到了正确的 PDF 输出。
使用 Mysql、eclipse luna、jre1.7、jaspersoft 插件 & 所有需要的 jars 都在 Lib 文件夹中。
我的 Servlet 代码 -
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection ("jdbc:mysql://localhost:3306/db", "root", "password");
ServletOutputStream servletOutputStream =response.getOutputStream();
InputStream reportStream =getServletConfig().getServletContext().getResourceAsStream("Blank_A4_Table_Based.jasper");
SimpleDateFormat eformat = new SimpleDateFormat("yyyy-MM-dd");
Date sDate = eformat.parse("2015-08-25");
String sdate=eformat.format(sDate );
System.out.println(sdate);
Date eDate = eformat.parse("2015-08-26");
String edate=eformat.format(eDate );
System.out.println(edate);
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("sdate",sDate);
parameters.put("edate",eDate);
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameters, connection);
connection.close();
response.setContentType("application/pdf");
servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain");
response.getOutputStream().print(stringWriter.toString());
}
Jasper 报告 JRXML -
<parameter name="sdate" class="java.util.Date">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="edate" class="java.util.Date">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT id, session_reason FROM session_details WHERE created BETWEEN $P{sdate} AND $P{edate})]]>
</queryString>
【问题讨论】:
标签: java servlets jasper-reports