0

I wanna generate table using collection in Jasper report.I have two report objects, FiberReport and FiberBufferReport objects.I need to generate table based on FiberBufferReport. You can check up on my report domain object,my controller method which generate report page and my ".jrxml" file from following codes. Please help me find out what is wrong ? How I can fix it ?

FiberReport object:

public class FiberReport {

private String name;
private String description;
private String fiberCount;
private String bron;
private String tros;
private String metalDetector;
private String facticalLength;
private String gisLength;
private String twisFactor;
private String diameter;
private String producer;
private String isList;

private List<FiberBufferReport> bufferList;

... getters and setters

My controller method :

`@RequestMapping(method = RequestMethod.GET, value = "/report/{id}")
public ModelAndView generatePdfReport(@PathVariable(value = "id") Long id, ModelAndView modelAndView)
        throws JRException {

    LOG.info("--------------generate fiber PDF report----------");

    Map<String, Object> parameterMap = new HashMap<String, Object>();

    List<FiberReport> fiberReportList = new ArrayList<FiberReport>(); // datasource

    Fiber fiber = fiberService.getOne(id); // selected Fiber
    FiberReport fiberReport = new FiberReport(); // Fiber report Object

    fiberReport.setName(fiber.getCableName());
    fiberReport.setFiberCount(fiber.getFiberCount().toString());
    .... settings

    Set<Buffer> bufferList = fiber.getBuffers();
    List<FiberBufferReport> subreportList = new ArrayList<FiberBufferReport>();
    FiberBufferReport subreport = null;

    for (Buffer buffer : bufferList) {

        Set<FiberStrand> fiberStrands = buffer.getFiberStrands();

        for (FiberStrand fiberStrand : fiberStrands) {

            subreport = new FiberBufferReport();
            subreport.setBuffer_name(buffer.getName());
            subreport.setBuffer_type(buffer.getBufferType().getName());

            subreport.setStrand_name(fiberStrand.getName());
            subreport.setStrand_color(fiberStrand.getColor() != null ? fiberStrand.getColor().toString() : "");
            ..... settings

            subreportList.add(subreport);

        }

    }

    fiberReport.setBufferList(subreportList);
    fiberReportList.add(fiberReport);

    JRDataSource JRdataSourceFiber = new JRBeanCollectionDataSource(fiberReportList);
    JRDataSource JRdataSourceFiberBuffer = new JRBeanCollectionDataSource(subreportList);

    parameterMap.put("datasource", JRdataSourceFiber);
    parameterMap.put("REPORT_DATA_SOURCE", JRdataSourceFiberBuffer);

    // pdfReport bean has ben declared in the spring configuration
    modelAndView = new ModelAndView("fiberReport_PDF", parameterMap);

    return modelAndView;

}

}`

And .jrxml file :

 .........
..........
<subDataset name="bufferList" whenResourceMissingType="Empty">
    <field name="buffer_name" class="java.lang.String"/>
    <field name="buffer_type" class="java.lang.String"/>
    <field name="strand_name" class="java.lang.String"/>
    <field name="strand_color" class="java.lang.String"/>
    <field name="strand_status" class="java.lang.String"/>
    <field name="strand_type" class="java.lang.String"/>
    <field name="strand_start" class="java.lang.String"/>
    <field name="strand_end" class="java.lang.String"/>
</subDataset>
.........
..........
<reportElement key="table 5" style="table 5" x="15" y="323" width="525" height="302"/>
            <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="bufferList">  
                    <datasetParameter name="REPORT_DATA_SOURCE">
                        <datasetParameterExpression><![CDATA[]]></datasetParameterExpression>
                    </datasetParameter> 
                    <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                </datasetRun>
                <jr:column width="90">
                    <jr:tableHeader style="table 5_TH" height="30"/>
                    <jr:columnHeader style="table 5_CH" height="30">
                        <staticText>
                            <reportElement x="0" y="0" width="90" height="30"/>
                            <text><![CDATA[buffer_name]]></text>
                        </staticText>
                    </jr:columnHeader>
                    <jr:detailCell style="table 5_TD" height="20">
                        <textField>
                            <reportElement x="0" y="0" width="90" height="20"/>
                            <textFieldExpression><![CDATA[$F{buffer_name}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>

               ....... jr columns

When I run it it shows empty table :/

Thanks in advance !

Alex K
  • 22,315
  • 19
  • 108
  • 236
Resul Rzaeeff
  • 448
  • 4
  • 14
  • 30

0 Answers0