Пользовательский класс для поля JasperReports - PullRequest
7 голосов
/ 17 января 2012

Я хотел бы создать отчет с пользовательским классом следующим образом:

public class Class1 {
  String cl1_f1;
  String cl1_f2;
}

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

Теперь я передаю Class2 в отчете через поля и 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>

В качестве третьего параметра я хотел бы упомянуть одно из его полей.Например: cl1_ob1.cl1_f1.

Как мне это сделать?

1 Ответ

13 голосов
/ 18 января 2012

В дизайне отчетов Jasper, поле будет определено следующим образом:

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

И к 2 переменным Class1 можно обратиться, вызвав метод getter (если он есть), или вы можете использоватьпеременная напрямую, в зависимости от ее прав доступа.Например, $ F {cl1_ob1} .getCl1_f1 () может использоваться в качестве выражения текстового поля, как показано ниже:

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