-1

I created a parameter ItemData with net.sf.jasperreports.engine.data.JRBeanCollectionDataSource class and inside table I added a data source expression $P{ItemData}.

I created a field Data with class java.lang.String and dropped it in Table Detail box.

But the result is null. I studied how to add datasouce object along with example. But I tried applying into this piece of code. But cant acheive it.

My code:

public static void main(final String[] args) {
        try {
final DataList DefinitionData= new DataList();
    final List<String> Data = new ArrayList<>();
    Data.add("AAG");
    Data.add("SNG");
    DefinitionData.setData(Data);
    final JRBeanCollectionDataSource items = new JRBeanCollectionDataSource(Data);
    final Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put("ItemData", items);

Getter\setter

public class DataList {
    private List<String> Data= new ArrayList<String>();

    public List<String> getData() {
        return Data;

    }

    public void setData(final List<String> Data) {
        this.Data= Data;

    }

Jrxml:

 <?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="Passing List of String" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <subDataset name="ItemDataset">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="Data" class="java.lang.String"/>
    </subDataset>
    <parameter name="ItemData" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <field name="Data" class="java.lang.String">
        <fieldDescription><![CDATA[_THIS]]></fieldDescription>
    </field>
    <summary>
        <band height="285" splitType="Stretch">
            <componentElement>
                <reportElement x="120" y="50" width="200" height="200">
                </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="ItemDataset">
                        <dataSourceExpression><![CDATA[$P{ItemData}]]></dataSourceExpression>
                    </datasetRun>
                    <jr:column width="190">
                        <jr:tableHeader height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="190" height="30"/>
                                <text><![CDATA[List of Data]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell height="30">
                            <textField>
                                <reportElement x="0" y="0" width="190" height="30"/>
                                <textFieldExpression><![CDATA[$F{Data}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </summary>
</jasperReport>

Generating report:

final String userHomeDirectory = System.getProperty("user.home");

            final String outputFile = userHomeDirectory + File.separatorChar + "JasperTableExamp10.pdf";
            final JasperPrint jasperPrint = JasperFillManager.fillReport(                   "/src/main//Example.jasper",parameters, new JREmptyDataSource());  


            final OutputStream outputStream = new FileOutputStream(new File(outputFile));               
            JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
Alex K
  • 22,315
  • 19
  • 108
  • 236
Saleem
  • 1
  • 1
  • Possible duplicate of [Passing an ArrayList report shows comma every item](http://stackoverflow.com/questions/40281343/passing-an-arraylist-report-shows-comma-every-item) – Alex K Jan 09 '17 at 11:34
  • Your code is wrong. Look at post from previous comment – Alex K Jan 09 '17 at 11:35
  • Which one is wrong . Java code or Jrxml ? – Saleem Jan 09 '17 at 12:29
  • template is wrong – Alex K Jan 09 '17 at 12:31
  • @AlexK Its not same as other issue. I tried all possible ways to print values inside Data in Table format but everything ends up in NULL. I can able to fetch values using Text field and print it in a format [AAG,SNG] but not inside a table in row wise. Any help would be greatly appreciated. I tried { <![CDATA[$P{ItemData}.toString().replace(",", " ").replace("[", "").replace("]", "")]]> } But in end its returning null . – Saleem Jan 11 '17 at 11:13

1 Answers1

0

As you are passing the list(java List) to jasper so in jasper you have to use List too. Change Data from java.lang.String to java.util.List

SpringLearner
  • 13,738
  • 20
  • 78
  • 116