Генерация пустой таблицы из DynamicJasper

Я пытаюсь создать таблицу с пользовательским шаблоном яшмы и с входным параметром. Однако я всегда заканчиваю с пустым PDF.

Мой jrxml

    <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1  -->
<!-- 2016-11-15T11:03:31 -->
<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="TestTable" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3a04a168-100e-462e-9951-68ce7dd6320a">
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="Dataset2" uuid="c04cf905-61fa-4de6-bd54-079e65365b31">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="name" class="java.lang.String"/>
        <field name="price" class="java.lang.String"/>
    </subDataset>
    <parameter name="TestParam" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="277" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="77" width="555" height="200" uuid="1b811fb1-5660-4d3f-99f7-0070b044363c">
                    <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
                    <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
                    <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
                    <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
                </reportElement>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="Dataset2" uuid="22d4fa75-1f8f-4911-a365-c74966c1f2fa">
                        <dataSourceExpression><![CDATA[$P{TestParam}]]></dataSourceExpression>
                    </datasetRun>
                    <jr:column width="150" uuid="50b18030-4c95-4992-977c-4ed2e8d3c430">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
                        <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement x="0" y="0" width="150" height="30" uuid="c909101c-8f62-4800-bb1e-f2bee23df6e9"/>
                                <text><![CDATA[Name]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="150" height="30" uuid="3cb2bbbf-5a84-499a-b105-bb85de3012a4"/>
                                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="130" uuid="be433f76-a9d7-4c78-9431-8dca6a3cede0">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
                        <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement x="0" y="0" width="130" height="30" uuid="16175e90-0f18-4628-a9f7-952baa9823ae"/>
                                <text><![CDATA[Price]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="130" height="30" uuid="82a2f8fb-9702-4ce7-93a5-2032dd83b884"/>
                                <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </title>
    <detail>
        <band height="95" splitType="Stretch"/>
    </detail>
</jasperReport>

Мой основной класс

public class ItemPriceReporter {

    public static void main(String[] args) throws FileNotFoundException, JRException {
        new ItemPriceReporter().generateReport();
    }

    private void generateReport() throws JRException, FileNotFoundException {
        DynamicReportBuilder drb = new DynamicReportBuilder();
        drb.setTemplateFile("TestTable.jrxml");
        Map<String, Object> params = new HashMap<>();
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(generateItems());
        params.put("TestParam", dataSource);
        JasperReport jasperReport = DynamicJasperHelper.generateJasperReport(drb.build(), new ClassicLayoutManager(), params);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
        JRPdfExporter pdfExporter = new JRPdfExporter();
        pdfExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
        FileOutputStream fos = new FileOutputStream("TestTable.pdf");
        pdfExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(fos));
        pdfExporter.exportReport();
    }

    private List<Item> generateItems() {
        List<Item> items = new ArrayList<>();
        Item item = new Item("test", "10");
        items.add(item);
        item = new Item("test2", "20");
        items.add(item);
        return items;
    }
}

Мой товар бин

public class Item {
    private String name;
    private String price;

    public Item() {
    }

    public Item(String name, String price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}

Кто-то может указать, что я здесь скучаю?

РЕДАКТИРОВАТЬ: Обновил jrxml с таблицей, перемещенной в заголовок

0 ответов

Другие вопросы по тегам