gpt4 book ai didi

java - JRBeanCollectionDataSource : How to show data from the java. util.List 来自 JavaBean?

转载 作者:行者123 更新时间:2023-12-03 11:18:31 30 4
gpt4 key购买 nike

我的 JavaBean 包含 java.util.List。

Userinfo {
private String username;
private String password;
List<Address> listAddress;
}

如何在Detail band中显示这个List的数据?

最佳答案

这是工作示例。
本样本的要点:

  • 使用 _THIS表达;
  • 中使用 List (jr:list) 组件详情

  • 生成报告的代码片段:
    public static void testBuildPdf() {
    try {
    Map<String, Object> params = new HashMap<String, Object>();
    JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, getDataSource());

    JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private static JRDataSource getDataSource() {
    Collection<BeanWithList> coll = new ArrayList<BeanWithList>();
    coll.add(new BeanWithList(Arrays.asList("London", "Paris"), 1));
    coll.add(new BeanWithList(Arrays.asList("London", "Madrid", "Moscow"), 2));
    coll.add(new BeanWithList(Arrays.asList("Rome"), 3));

    return new JRBeanCollectionDataSource(coll);
    }
    JavaBean 代码:
    public class BeanWithList {

    // The member's name can be any. The JR engine is using public getter for extracting field's value
    private List<String> cities;
    private Integer id;

    public BeanWithList(List<String> cities, Integer id) {
    this.cities = cities;
    this.id = id;
    }

    // getter should be public
    public List<String> getCities() {
    return this.cities;
    }

    public Integer getId() {
    return this.id;
    }
    }
    jrxml 文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport ...>
    <subDataset name="dataset1">
    <field name="city" class="java.lang.String">
    <fieldDescription><![CDATA[_THIS]]></fieldDescription>
    </field>
    </subDataset>
    <field name="id" class="java.lang.Integer"/>
    <field name="cities" class="java.util.Collection"/>
    <title>
    <band height="103" splitType="Stretch">
    <staticText>
    <reportElement x="138" y="28" width="258" height="20"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[Bean with List sample]]></text>
    </staticText>
    </band>
    </title>
    <columnHeader>
    <band height="20">
    <staticText>
    <reportElement x="0" y="0" width="100" height="20"/>
    <box>
    <topPen lineWidth="1.0"/>
    <leftPen lineWidth="1.0"/>
    <bottomPen lineWidth="1.0"/>
    <rightPen lineWidth="1.0"/>
    </box>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true" isItalic="true" isUnderline="false"/>
    </textElement>
    <text><![CDATA[Id]]></text>
    </staticText>
    <staticText>
    <reportElement x="100" y="0" width="100" height="20"/>
    <box>
    <topPen lineWidth="1.0"/>
    <leftPen lineWidth="1.0"/>
    <bottomPen lineWidth="1.0"/>
    <rightPen lineWidth="1.0"/>
    </box>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true" isItalic="true" isUnderline="false"/>
    </textElement>
    <text><![CDATA[City name]]></text>
    </staticText>
    </band>
    </columnHeader>
    <detail>
    <band height="20" splitType="Stretch">
    <textField>
    <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="100" height="20"/>
    <box leftPadding="10">
    <topPen lineWidth="1.0"/>
    <leftPen lineWidth="1.0"/>
    <bottomPen lineWidth="1.0"/>
    <rightPen lineWidth="1.0"/>
    </box>
    <textElement/>
    <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
    </textField>
    <componentElement>
    <reportElement x="100" y="0" width="400" height="20"/>
    <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
    <datasetRun subDataset="dataset1">
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{cities})]]></dataSourceExpression>
    </datasetRun>
    <jr:listContents height="20" width="400">
    <textField>
    <reportElement x="0" y="0" width="100" height="20"/>
    <box leftPadding="10">
    <topPen lineWidth="1.0"/>
    <leftPen lineWidth="1.0"/>
    <bottomPen lineWidth="1.0"/>
    <rightPen lineWidth="1.0"/>
    </box>
    <textElement/>
    <textFieldExpression><![CDATA[$F{city}]]></textFieldExpression>
    </textField>
    </jr:listContents>
    </jr:list>
    </componentElement>
    </band>
    </detail>
    </jasperReport>
    结果将是:
    The resulting report in PDF format

    其他相关问题是 How do I print a list of strings contained within another list in iReport?问题和 Passing the List of primitive type objects as datasource for subreport题。

    关于java - JRBeanCollectionDataSource : How to show data from the java. util.List 来自 JavaBean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856133/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com