[英]Parameters are not binding in jasper reports
我正在尝试从 jasper 报告生成 pdf。 但是生成了pdf文件但参数没有反映在pdf中。 这是我的代码:
firstPage.jrxml 文件代码:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="firstPage" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="9e04b773-6665-446a-837f-863d3d7ce312">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="11"/>
<parameter name="data" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="209" y="27" width="100" height="20" uuid="0fde4029-d805-448f-a443-a436a41865d1"/>
<textFieldExpression><![CDATA[$P{data}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="190" splitType="Stretch"/>
</detail>
<columnFooter>
<band height="78" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
和Spring Java代码:
Resource resourse = new ClassPathResource("/jasper/firstPage.jasper");
Resource imgResource = new ClassPathResource("/img/Big_India.jpg");
Map<String, Object> data = new HashMap<String, Object>();
data.put("data", "Rks");
try {
data.put("imagePath", imgResource.getURL().toString());
JasperPrint jasperPrint = JasperFillManager.fillReport(resourse.getInputStream(), data);
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "/home/rakesh/Desktop/ss.pdf");
exporter.exportReport();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
似乎您错过了一个DataSource
,它是一个存储结构化数据的容器。 Jasper 报告引擎在生成报告时从DataSource
检索数据。
Jasper 提供了许多DataSource
,例如JRResultSetDataSource
、 JRBeanCollectionDataSource
和JRMapCollectionDataSource
。 每个都可以从不同的数据源检索数据以填充报告字段。
在您的情况下,如果您不需要将数据填充到表中,您可以简单地使用JREmptyDataSource
:
JasperPrint jasperPrint = JasperFillManager.fillReport(resourse.getInputStream(), data, new JREmptyDataSource());
有关数据源的更多详细信息,您可以查看JasperReports - 数据源示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.