为什么报告通过Java代码生成为空?我在Studio中使用JDBCDataAdapter获得了一个有效的结果
在我的项目中,我正在使用Jaspersoft Studio(JSS)创建一份pdf报告。JSS预览正确地生成了报告,但它从Java创建了一个空报告。我已将我的查询作为查询字符串放入报告中 以下是我的Java代码:为什么报告通过Java代码生成为空?我在Studio中使用JDBCDataAdapter获得了一个有效的结果,java,jasper-reports,Java,Jasper Reports,在我的项目中,我正在使用Jaspersoft Studio(JSS)创建一份pdf报告。JSS预览正确地生成了报告,但它从Java创建了一个空报告。我已将我的查询作为查询字符串放入报告中 以下是我的Java代码: public void getPDFReport(String userId, ChecklistReport report, OutputStream stream) { Map<String, Object> parameters = new HashMap&l
public void getPDFReport(String userId, ChecklistReport report, OutputStream stream) {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("BRANCH_CODE", report.getBranchCode());
Resource resource = resourceLoader.getResource(reportPath);
try {
JasperDesign design = JRXmlLoader.load(resource.getInputStream());
JasperReport jasperReport = JasperCompileManager.compileReport(design);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
JasperExportManager.exportReportToPdfStream(jasperPrint, stream);
} catch (Exception e) {
e.printStackTrace();
}
}
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
public void getPDFReport(字符串用户ID、ChecklistReport报告、OutputStream){
映射参数=新的HashMap();
parameters.put(“BRANCH_CODE”,report.getBranchCode());
Resource=resourceLoader.getResource(reportPath);
试一试{
JasperDesign=JRXmlLoader.load(resource.getInputStream());
JasperReport-JasperReport=JasperCompileManager.compileReport(设计);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数);
jaspeexportmanager.exportReportToPdfStream(jasperPrint,stream);
}捕获(例外e){
e、 printStackTrace();
}
}
这是我的报告xml:
<?xml version="1.0" encoding="UTF-8"?>
<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="checklist_report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="DCFCL Adapter"/>
<parameter name="BRANCH_CODE" class="java.lang.String"/>
<queryString language="SQL">
<![CDATA[SELECT F.FUNC_NAME
FROM CHECKLIST C JOIN FUNCTIONS F ON C.FUNC_ID = F.FUNC_ID
WHERE C.BRANCH_CODE=$P{BRANCH_CODE}]]>
</queryString>
<field name="FUNC_NAME" class="java.lang.String"/>
<title>
<band height="71" splitType="Stretch">
<staticText>
<reportElement x="0" y="30" width="70" height="18"/>
<text><![CDATA[Branch Code:]]></text>
</staticText>
<textField>
<reportElement x="70" y="30" width="80" height="18"/>
<textFieldExpression><![CDATA[$P{BRANCH_CODE}]]></textFieldExpression>
</textField>
</band>
</title>
<columnHeader>
<band height="30" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="175" height="30"/>
<text><![CDATA[Function Name]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="30" splitType="Stretch">
<textField>
<reportElement positionType="Float" x="0" y="0" width="175" height="30"/>
<textFieldExpression><![CDATA[$F{FUNC_NAME}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
如何解决此问题?出了什么问题?
您忘记了通过Java代码传递db连接。没有它,引擎无法生成报告
如何修复?
如果使用基于DB的数据源的报告,则必须将DB连接传递给引擎
例如,如果您有这样的报告:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ..>
<queryString language="SQL">
<![CDATA[SELECT attr FROM table]]>
</queryString>
这意味着您需要使用在签名处具有连接
对象的方法
例如,这个:
如果使用Jaspersoft Studio,引擎会在后台使用dataapter选项执行相同的操作。您所说的连接是什么?我已经在我的报告中建立了数据库连接。你能告诉我连接代码应该放在哪里吗?你能告诉我如何在spring boot中初始化连接对象吗?例如:jdbcTemplate.getDataSource().getConnection()我已经通过了连接,但仍然得到空报告