java - Jasper报告总是显示没有内容,为什么?

标签 java jasper-reports

我有以下代码:

InputStream reportFile = MyPage.this.getClass().getResourceAsStream("test.jrxml");


HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("StringParameterName", "show me");
try {
   JasperReport report = JasperCompileManager.compileReport(reportFile);
   JasperPrint print = JasperFillManager.fillReport(report, parameters);
   return JasperExportManager.exportReportToPdf(print);
} catch (JRException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
}

test.jrxml 看起来像这样(我用 iReport 生成了它的一部分,我做的唯一一件事就是删除 language="groovy"属性):

<?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="test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="StringParameterName" isForPrompting="false" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="20">
          <staticText>
            <reportElement x="180" y="0" width="200" height="20"/>
            <text><![CDATA[Hello World!]]></text>
          </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <textField>
                <reportElement x="243" y="77" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$P{StringParameterName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

结果我总是得到一个空白的 pdf 文件。可能是什么原因?

最佳答案

而不是

JasperPrint print = JasperFillManager.fillReport(report, parameters);

我用过

JasperPrint print = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());

并且成功了。

谢谢!

关于java - Jasper报告总是显示没有内容,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683264/

相关文章:

java - JasperReport org.w3c.tools.codec.Base64Decoder 无法解析为类型

java - 从 .toString() 判断 BasicMongoDBObject 是否有效?

Java class.getResource().getPath() 在 URL 的开头添加了一个奇怪的 '/'

java - 如何关闭一个框架并打开一个新框架?

Java Servlet - 空指针异常

java - 无法对 Jasper 报告中的数据进行分组

java - "Embedding"JasperServer 到外部网络应用程序?

java - Jasper 报告未在 ADF 中的屏幕上呈现 PDF 文件

jasper-reports - JfreeChart自定义票据标签

java - FFT 图像变换的输入和输出应该是什么?