首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jrxml中使用java.util.Collection参数?

如何在jrxml中使用java.util.Collection参数?
EN

Stack Overflow用户
提问于 2016-05-04 14:10:53
回答 1查看 4.7K关注 0票数 0

我已经在我的java代码中添加了JRBeanCollectionDataSource,并在我的mainreportsubreport.But中添加了参数。我无法在jrxml.Please中打印参数,建议我如何使用jrxml中的参数。

JAVA代码:

代码语言:javascript
复制
      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());

主要报告:

代码语言:javascript
复制
      <?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>

在子报告中,我已经分配了参数,但它不起作用。

代码语言:javascript
复制
<textField>
            <reportElement x="164" y="3" width="75" height="14" />
            <textFieldExpression><![CDATA[$P{invoiceList}]]>    </textFieldExpression>
        </textField>
EN

回答 1

Stack Overflow用户

发布于 2016-05-04 14:59:15

将列表用作主报表中的字段变量。

代码语言:javascript
复制
<field name="yourList" class="java.util.ArrayList">
        <fieldDescription><![CDATA[]]></fieldDescription>
</field>

且数据源表达式应为

代码语言:javascript
复制
<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>

在控制器端,你应该传递你的列表

代码语言:javascript
复制
JasperReport jasperMasterReport = (JasperReport) JRLoader.loadObjectFromFile(your_jasper_file_path);    
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList, false);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperMasterReport, parameters, beanColDataSource);

假设您有InvoiceDTO类,并且有一些成员

代码语言:javascript
复制
String name;
String email;

您可以通过以下命令从子报表中访问它:

代码语言:javascript
复制
<field name="name" class="java.lang.String"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37019788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档