2012-01-17 6 views
5

me gustaría crear un informe con una clase personalizada de la siguiente manera:clase personalizada para el campo JasperReports

public class Class1 { 
    String cl1_f1; 
    String cl1_f2; 
} 

public class Class2 { 
    String cl2_f1; 
    String cl2_f2; 
    Class1 cl1_ob1; 
} 

Paso ahora Clase2 en el informe a través de campos y JRBeanCollectionDataSource.

<subDataset name="myitems"> 
    <field name="cl2_f1" class="java.lang.String"/> 
    <field name="cl2_f2" class="java.lang.String"/> 
    **<field name="cl1_ob1" class="Class2"/>** 
</subDataset> 

Para el tercer parámetro, me gustaría mencionar uno de sus campos. Por ejemplo: cl1_ob1.cl1_f1.

¿Cómo puedo lograr esto?

Respuesta

10

En el diseño de informes Jasper, el campo se definirá de la siguiente manera:

<field name="cl1_ob1" class="Class1"> 
    <fieldDescription><![CDATA[cl1_ob1]]></fieldDescription> 
</field> 

Y las 2 variables de Clase 1 se puede acceder mediante una llamada al método getter (si lo hay), o puede utilizar la variable directamente, según sus privilegios de acceso. Por ejemplo, $ F {} cl1_ob1 .getCl1_f1() se puede utilizar como una expresión de texto de campo, como se muestra a continuación:

<textField> 
    <reportElement x="36" y="26" width="235" height="20"/> 
    <textElement textAlignment="Center" verticalAlignment="Middle"/> 
    <textFieldExpression><![CDATA[$F{cl1_ob1}.getCl1_f1()]]></textFieldExpression> 
</textField> 
+0

Mi Dios! ¡¡Eso es genial!! Gracias hermano. ¡Funciona sin problemas! – venomrld

+1

@bchetty Recibí una java.lang.ClassNotFoundException: No cargaré clases desde el paquete predeterminado (Class1) –

+0

@JohnB para java.lang.ClassNotFoundException proporcionará la ruta completa.Me funciona perfectamente. Gracias bchetty. –

Cuestiones relacionadas