我在我的java代码中添加了JRBeanCollectionDataSource
,并在我的mainreport
和subreport
中添加了参数。但我无法在jrxml中打印参数。请告诉我我需要什么使用jrxml中的参数。
JAVA CODE:
List<InvoiceDTO> invoiceList = new ArrayList<InvoiceDTO>();
invoiceList.add(invoice);
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(invoiceList);
JasperPrint report = null;
parameters.put("invoiceList",invoiceList);
report = JasperFillManager.fillReport(stream, parameters, new JREmptyDataSource());
主要报告:
<?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="ageing-esr-40-srpski" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" >
<property name="com.jasperassistant.designer.GridHeight" value="12"/>
<property name="com.jasperassistant.designer.GridWidth" value="12"/>
<property name="com.jasperassistant.designer.SnapToGrid" value="false"/>
<property name="com.jasperassistant.designer.Grid" value="false"/>
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="110"/>
<scriptlet name="esrgenerator" class="dk.comtalk.billing.server.util.ESRGenerator"/>
<parameter name="printAmount" class="java.lang.String"/>
<parameter name="invoiceId" class="java.lang.Integer"/>
<parameter name="customerId" class="java.lang.String"/>
<parameter name="entityName" class="java.lang.String"/>
<parameter name="entityAddress" class="java.lang.String"/>
<parameter name="entityCity" class="java.lang.String"/>
<parameter name="entityProvince" class="java.lang.String"/>
<parameter name="entityPostalCode" class="java.lang.String"/>
<parameter name="customerName" class="java.lang.String"/>
<parameter name="customerAddress" class="java.lang.String"/>
<parameter name="customerCity" class="java.lang.String"/>
<parameter name="customerProvince" class="java.lang.String"/>
<parameter name="customerPostalCode" class="java.lang.String"/>
<parameter name="entityLogo" class="java.io.File"/>
<parameter name="countryCode" class="java.lang.String"/>
<parameter name="balance" class="java.lang.String"/>
<parameter name="carriedBalance" class="java.lang.String"/>
<parameter name="invoiceDueDate" class="java.lang.String"/>
<parameter name="totalWithTax" class="java.lang.String"/>
<parameter name="newStatusId" class="java.lang.Integer"/>
<parameter name="invoiceDate" class="java.lang.String"/>
<parameter name="invoiceList" class="java.util.List"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["D:\\Ravi Workspace\\Openbrm\\open-brm-openbrm-2.0\\resources\\designs\\"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select count(*) from payment_invoice p where p.invoice_id=$P{invoiceId};]]>
</queryString>
<field name="payment_count" class="java.lang.Integer"/>
<group name="invoice_total">
<groupFooter>
<band/>
</groupFooter>
</group>
<title>
<band height="430">
<image>
<reportElement x="8" y="0" width="185" height="48" />
<imageExpression class="java.io.File"><![CDATA[$P{entityLogo}]]></imageExpression>
</image>
<textField>
<reportElement x="57" y="120" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="57" y="148" width="294" height="14" />
<textFieldExpression><![CDATA[$P{customerPostalCode}+ " " + $P{customerCity}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="57" y="162" width="211" height="14" />
<textFieldExpression><![CDATA[$P{countryCode}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="57" y="134" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerAddress}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="384" y="103" width="200" height="28" />
<textElement>
<font size="11" isBold="true"/>
</textElement>
<text><![CDATA[1. opomena za neizmireni racun]]></text>
</staticText>
<staticText>
<reportElement x="405" y="173" width="179" height="14" />
<text><![CDATA[Wangen b. Brüttisellen, 13.12.2015]]></text>
</staticText>
<staticText>
<reportElement x="36" y="201" width="328" height="19" />
<text><![CDATA[Postovani gospodine/postovana gospodjo,]]></text>
</staticText>
<staticText>
<reportElement x="36" y="220" width="544" height="35" />
<text><![CDATA[Dozvolite da Vas podsetimo da je, po podacima naseg knjigovodstva od danasnjeg dana, sledeci telefonski racun jos otvoren:]]></text>
</staticText>
<staticText>
<reportElement x="35" y="330" width="549" height="34" />
<text><![CDATA[Ukoliko je Vasa uplata za ovde navedeni racun u medjuvremenu vec izvrsena, nemojte uzimati ovu opomenu u obzir. Ukoliko jos nije, molimo Vas da izvrsite uplatu izvrsite odmah.]]></text>
</staticText>
<staticText>
<reportElement x="35" y="360" width="557" height="69" />
<text><![CDATA[Imajte u vidu da se kod opomena, uz regularni racun, placa administrativna taksa za obradu u visini od Fr. 20.00. Ev.deaktivacija servisa se, takodje, naplacuje, dodatnih Fr. 20.00. Molimo Vas stoga za postovanje nasih rokova uplate.
Najlepse hvala.]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="36" y="257" width="559" height="73" isRemoveLineWhenBlank="true"/>
<subreportParameter name="invoiceDate">
<subreportParameterExpression><![CDATA[$P{invoiceDate}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="customerId">
<subreportParameterExpression><![CDATA[$P{customerId}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="printAmount">
<subreportParameterExpression><![CDATA[$P{printAmount}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="invoiceId">
<subreportParameterExpression><![CDATA[$P{invoiceId}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="invoiceDueDate">
<subreportParameterExpression><![CDATA[$P{invoiceDueDate}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="invoiceList">
<subreportParameterExpression><![CDATA[$P{invoiceList}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="newStatusId">
<subreportParameterExpression><![CDATA[$P{newStatusId}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{invoiceList})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"> <![CDATA[$P{SUBREPORT_DIR} + "ageing-esr-40-srpski-subreport1.jasper"]]> </subreportExpression>
</subreport>
</band>
</title>
<pageHeader>
<band height="117">
<staticText>
<reportElement x="36" y="101" width="576" height="16" />
<text><![CDATA[Symphonica AG | Hegnaustrasse 17 | 8602 Wangen b. Brüttisellen | Telefon 0840 988 988 | Fax 043 536 05 43]]></text>
</staticText>
<staticText>
<reportElement x="35" y="8" width="243" height="26" />
<text><![CDATA[S postovanjem,
BALKATEL | Symphonica A.D.]]></text>
</staticText>
</band>
</pageHeader>
<summary>
<band height="294">
<textField>
<reportElement x="5" y="56" width="123" height="14" />
<textFieldExpression><![CDATA[$P{entityName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="5" y="68" width="153" height="14" />
<textFieldExpression><![CDATA[$P{entityAddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="5" y="81" width="226" height="14" />
<textFieldExpression><![CDATA[$P{entityPostalCode}+ " " + $P{entityCity}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="5" y="26" width="100" height="15" />
<text><![CDATA[6301 Zug]]></text>
</staticText>
<staticText>
<reportElement x="179" y="26" width="100" height="15" />
<text><![CDATA[6301 Zug]]></text>
</staticText>
<textField>
<reportElement x="179" y="56" width="123" height="14" />
<textFieldExpression><![CDATA[$P{entityName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="179" y="68" width="149" height="14" />
<textFieldExpression><![CDATA[$P{entityAddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="179" y="81" width="226" height="14" />
<textFieldExpression><![CDATA[$P{entityPostalCode}+ " " + $P{entityCity}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="97" y="110" width="100" height="14" />
<text><![CDATA[01-2653-5]]></text>
</staticText>
<staticText>
<reportElement x="272" y="110" width="100" height="16" />
<text><![CDATA[01-2653-5]]></text>
</staticText>
<textField>
<reportElement x="169" y="236" width="640" height="30" />
<textElement textAlignment="Left">
<font fontName="SansSerif" size="13"/>
</textElement>
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.generateCodeline($P{printAmount}.split("\\s+")[1],"01",">","971786","+","0126535",">",$P{invoiceId})]]></textFieldExpression>
</textField>
<textField>
<reportElement x="353" y="132" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="353" y="144" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerAddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="353" y="158" width="294" height="14" />
<textFieldExpression><![CDATA[$P{customerPostalCode}+ " " + $P{customerCity}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="8" y="193" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="8" y="205" width="181" height="14" />
<textFieldExpression><![CDATA[$P{customerAddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="8" y="218" width="251" height="14" />
<textFieldExpression><![CDATA[$P{customerPostalCode}+ " " + $P{customerCity}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="353" y="172" width="211" height="14" />
<textFieldExpression><![CDATA[$P{countryCode}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="8" y="230" width="194" height="14" />
<textFieldExpression><![CDATA[$P{countryCode}]]> </textFieldExpression>
</textField>
<textField>
<reportElement x="353" y="92" width="424" height="19" />
<textElement>
<font fontName="SansSerif" size="11" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.getReferenceNumber("971786",$P{invoiceId})]]></textFieldExpression>
</textField>
<textField>
<reportElement x="8" y="172" width="186" height="16" />
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.getReferenceNumber("971786",$P{invoiceId})]]></textFieldExpression>
</textField>
<textField>
<reportElement x="132" y="142" width="47" height="15" />
<textElement>
<font fontName="SansSerif" size="11"/>
</textElement>
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.splitAmount($P{printAmount}.split("\\s+")[1].split("\\.")[1])]]></textFieldExpression>
</textField>
<textField>
<reportElement x="301" y="142" width="40" height="15" />
<textElement>
<font fontName="SansSerif" size="11"/>
</textElement>
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.splitAmount($P{printAmount}.split("\\s+")[1].split("\\.")[1])]]></textFieldExpression>
</textField>
<textField>
<reportElement x="2" y="142" width="105" height="15" />
<textElement textAlignment="Right">
<font fontName="SansSerif" size="11"/>
</textElement>
<textFieldExpression><![CDATA[$P{esrgenerator_SCRIPTLET}.splitAmount($P{printAmount}.split("\\s+")[1].split("\\.")[0]).trim()]]></textFieldExpression>
</textField>
<textField>
<reportElement x="173" y="142" width="105" height="15" />
<textElement textAlignment="Right">
<font fontName="SansSerif" size="11"/>
</textElement>
<textFieldExpression> <![CDATA[$P{esrgenerator_SCRIPTLET}.splitAmount($P{printAmount}.split("\\s+")[1].split("\\.")[0]).trim()]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
在子报告中,我已经分配了参数,但它无法正常工作。
<textField>
<reportElement x="164" y="3" width="75" height="14" />
<textFieldExpression><![CDATA[$P{invoiceList}]]> </textFieldExpression>
</textField>
答案 0 :(得分:0)
在主报告中将列表用作字段变量。
<field name="yourList" class="java.util.ArrayList">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
,数据源表达式应为
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{yourList}, false)]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "ageing-esr-40-srpski-subreport1.jasper"]]></subreportExpression>
从控制器端,您应该通过列表
JasperReport jasperMasterReport = (JasperReport) JRLoader.loadObjectFromFile(your_jasper_file_path);
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList, false);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperMasterReport, parameters, beanColDataSource);
假设你有InvoiceDTO
类并且有一些成员
String name;
String email;
您只需
即可从子报表访问此内容<field name="name" class="java.lang.String"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
希望这会有所帮助。