#java #jasper-reports
#java #jasper-отчеты
Вопрос:
Я должен сгенерировать отчет, в котором отображается информация об одном объекте (поэтому вводится только один компонент).
Первая проблема заключается в том, что этот компонент должен содержать списки вспомогательных компонентов (например, комментарии, с типом комментария и датой комментария). Поэтому я могу передать их в подотчет.
Вторая проблема заключается в том, что существует массив из 4 вспомогательных компонентов, который содержит несколько полей. Я могу создать отдельное поле для каждого свойства суб-компонента ( firstSubBeanName, secondSubBeanName … ), Но это некрасиво : (. В идеале должен быть способ доступа к этим компонентам таким образом :
$F{test}[0].name
Пожалуйста, помогите.
Комментарии:
1. Я не понимаю, почему это не сработает, при условии, что поле объявлено с соответствующим типом (т.Е. com.foo.bar.SomeBean[] ). Вы пробовали это? У вас есть какая-либо ошибка?
2. Ну, я не знал, как указать тип «массив чего-то», по крайней мере, с дженериками это не работает. Но он хорошо работает со списками, поэтому проблема решена.
Ответ №1:
Если у вашего списка есть имя (т.Е. Является свойством объекта), вам нужно просто передать в качестве выражения источника данных для вложенного отчета это свойство
$F{subBeansList}
Вложенный отчет должен быть готов к приему такого рода данных. Если вы используете struts, возможно, вам следует использовать этот класс:
org.apache.struts2.views.jasperreports.ValueStackDataSource
в качестве посредника в вашем поле списка, которое будет передано во вложенный отчет.
Второй вопрос, простой способ — использовать список, чтобы вы могли использовать это выражение:
$F{test}.thelist.get(0)