У меня есть объект со списком вложенных объектов. Я хочу получить только первый элемент списка и показать одно из его свойств.Как получить первый элемент списка в JasperReports?
Пример:
public class Person {
List<Phone> phones;
}
public class Phone {
String type;
String number;
}
Здесь я только хочу, чтобы получить количество человек первый телефон (phones.get(0)
в Java), и показать атрибут phone.numer
.
Я начал так, какая работа, но показывает любые телефонные номера:
<field name="phones" class="java.util.List"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="Dataset1">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{phones})]]></dataSourceExpression>
</datasetRun>
<jr:listContents>
<textField>
<textFieldExpression><![CDATA[$F{number}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
Я также попытался следующий подход:
<field name="phones" class="java.util.List" />
<field name="phoneFirst" class="my.package.Phone">
<fieldDescription><![CDATA[$F{phones}.get(0)]]></fieldDescription>
</field>
<field name="phoneFirstNumber" class="java.lang.String">
<fieldDescription><![CDATA[$F{phoneFirst}.getNumber()]]></fieldDescription>
</field>
Результат: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : $F{phones}.get(0)
Итак, как могу я сообщить JasperReports
, чтобы просто взять первый элемент коллекции?
Я хочу использовать сгенерированный сложный XML WebService объект ответа, таким образом, не может изменить класс , Я надеялся, что смогу добиться этого в jreports за то, что вам не нужно вводить объект переноса яшмы ... – membersound
Я хотел бы знать, что не так с моим ответом, чтобы гарантировать 3 downvotes. – JamesB
В исходном вопросе нет ничего, в котором говорится, что класс Person не может быть изменен. – JamesB