Buenas Tardes a todos,
Tengo un problema con iReport al tratar de asignar un datasource a un subreporte que mando como parámetro al reporte maestro, las versiones que estoy utilizando son las siguientes:
iReport 2.0.4
j2sdk 1.4.2_19
a continuación pongo el código utilizado para llenar el reporte:
List array1 = new ArrayList();
HashMap parameterMap = new HashMap();
array1.add(new Person("Alberto",20));
array1.add(new Person("Pedro",10));
datasource1 = new JRBeanCollectionDataSource(array1);
parameterMap.put("datasource1",datasource1);
JasperDesign jasperDesign = JRXmlLoader.load(reportStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrintPDF = JasperFillManager.fillReport(jasperReport, parameterMap, datasource);
El bean utilizado Persona es el siguiente:
public class Person {
private String name = "";
private int age = 0;
...
con sus getters y setters respectivamente.
El reporte y el subreporte son creados con iReport, a continuación pongo el código del reporte y del subreporte:
<pageHeader>
<band height="50" isSplitAllowed="true" >
<subreport isUsingCache="true">
<reportElement x="0" y="0" width="101" height="18" key="subreport-1"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionD ataSource($P{array1})]]> </dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "PRUEBA_DATASOURCES_subreport0.jasper"]]>
</subreportExpression>
</subreport>
</band>
</pageHeader>
El código del subreporte es el siguiente:
<detail>
<band height="103" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement x="14" y="26" width="112" height="43" key="textField-1"/>
<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
<textElement>
<font/>
</textElement>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
Para agregar el dataSource al subreporte, abro las propiedades del subreporte y en la pestaña "Subreport" en la sección "Connection/Data Source Expression", selecciono la opción "Use data source expression" y como expresión pongo lo siguiente:
new net.sf.jasperreports.engine.data.JRBeanCollectionD ataSource($P{array1})
Con esta configuración no imprime nada en el subreporte, llevo varios días tratando de resolver este problema, lo cual no he logrado, agradecería mucho si alguien tiene la solución y la pudiera compartir conmigo.
Muchas Gracias.
Saludos.