为什么报告通过Java代码生成为空?我在Studio中使用JDBCDataAdapter获得了一个有效的结果

为什么报告通过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

在我的项目中,我正在使用Jaspersoft Studio(JSS)创建一份pdf报告。JSS预览正确地生成了报告,但它从Java创建了一个空报告。我已将我的查询作为查询字符串放入报告中

以下是我的Java代码:

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()我已经通过了连接,但仍然得到空报告