Mein JavaBean enthält die java.util.List.
Userinfo {
private String username;
private String password;
List<Address> listAddress;
}
So zeigen Sie die Daten davon an Liste in dem Detail Band?
Gaohongyan
Mein JavaBean enthält die java.util.List.
Userinfo {
private String username;
private String password;
List<Address> listAddress;
}
So zeigen Sie die Daten davon an Liste in dem Detail Band?
Alex K
Die wichtigsten Punkte dieses Beispiels:
_THIS
Ausdruck;Das Code-Snippet zum Generieren des Berichts:
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);
}
Der JavaBean-Code:
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;
}
}
Die jrxml-Datei:
<?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>
Das Ergebnis wird sein:
Weitere verwandte Fragen sind: Wie drucke ich eine Liste von Zeichenfolgen, die in einer anderen Liste in iReport enthalten sind? Frage und Übergeben der Liste der Objekte vom primitiven Typ als Datenquelle für die Unterberichtsfrage.
Sie haben eine Liste mit Städten, aber im
– Girisch K
3. Februar 2014 um 13:03 Uhr
@GirishK Sehen Sie sich die Felddeklaration in an jrxml Datei
– Alex K
3. Februar 2014 um 14:38 Uhr
Sie haben „Städte“ als Feldnamen für die Sammlung verwendet, obwohl der tatsächliche Name der Liste in BeanWithList „m_cities“ lautet, außerdem gibt es keinen Verweis auf „Städte“ wie im Element „subDataset“. Wie funktioniert es eigentlich?
– Michael Assraff
10. Juni 2017 um 12:48 Uhr
@MichaelAssraf Der öffentliche Getter ist public List<String> getCities()
. Es bedeutet, dass Sie verwenden können cities
Name
– Alex K
10. Juni 2017 um 13:03 Uhr
Ich habe es in der letzten Bearbeitung auf diese Syntax umgestellt, um es klarer zu machen. Fühlen Sie sich frei, es zurückzusetzen, wenn es Ihnen nicht gefällt.
– Petter Friberg
11. Oktober 2018 um 19:33 Uhr
Alexander Sale
public void generisiIzvestaj(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<Predstava> predstave = (List<Predstava>)request.getSession().getAttribute("predstaveR");
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(predstave);
InputStream inputStream = this.getClass().getResourceAsStream("/reports/Predstave.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(inputStream);
Map<String, Object> params = new HashMap<String, Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
inputStream.close();
response.setContentType("application/x-download");
response.addHeader("Content-disposition", "attachment; filename=PredstaveRezisera.pdf");
ServletOutputStream out = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint,out);
Können Sie mir dabei helfen? stackoverflow.com/questions/55262894/…
– Tomuța Dan Claudiu
23. März 2019 um 16:12 Uhr