如何将数据放在Java的jrxml文件中?

时间:2016-12-23 15:15:28

标签: java jasper-reports

您好我的.jrxml文件中的代码示例。

<staticText>
    <reportElement x="69" y="10" width="422" height="180" uuid="52dc00c8-2cd3-466e-bc37-9dde8d5da625"/>
    <textElement textAlignment="Justified" markup="html">
        <font size="11"/>
        <paragraph lineSpacing="1_1_2"/>
    </textElement>
    <text><![CDATA[I HAVE THINGS HERE]]></text>
</staticText>

在文本标签上,我想要一个来自Java类的字符串。我怎么做? 这是Java代码:

public static void main(String[] args) {
     try {
        JasperReport jasperReport = JasperCompileManager
            .compileReport("src/main/resources/EJA1.jrxml");
        Long now = new Date().getTime();
        Map parameters = new HashMap();
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
        JasperExportManager.exportReportToPdfFile(jasperPrint,
            "src/main/resources/reports/teste" + now.toString() + ".pdf");
    } catch (JRException e) {
        e.printStackTrace();
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

<强>更新

感谢Alex K指出staticText我的原始解决方案错误。

将您的元素从staticText更改为textField,然后在CDATA中将您的Java类名称保持为常量。像这样:

<![CDATA[Foo.Bar]]>

假设你有

public class Foo {
    public final static String Bar = "bar";
    ...

例如,以下是我如何呈现来自Java类的字符串:

<pageHeader>
    <band height="30" splitType="Prevent">
        <frame>
            <reportElement style="pageHeader" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/>
            <textField isStretchWithOverflow="true">
                <reportElement style="pageSubHeaderText" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/>
                <textElement textAlignment="Left"/>
                <textFieldExpression class="java.lang.String"><![CDATA[SomeHelper.someMethod()]]></textFieldExpression>
            </textField>
        </frame>
    </band>
</pageHeader>