Отчеты Jasper передают список / массив в bean

#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)