Как напечатать Arraylist Strings в Jasper 4.5.1 с помощью плагина Struts - PullRequest
0 голосов
/ 28 марта 2012

Кому-нибудь удалось напечатать ArrayList в Javabean в Struts с использованием отчетов Jasper 4.5.0

В моем тестовом примере я использую коллекцию в качестве поля и передаю ее в качестве набора данных, используя _THIS Iудалось напечатать массив строк в моем Javabean ...

Согласно Jasper : специальное сопоставление полей может использоваться для доступа к самому текущему объекту JavaBean.Таким образом, когда поле использует _THIS в качестве описания или имени, источник данных вернет текущий объект JavaBean в качестве значения поля.

<field name="facilities" class="java.util.Collection">
    <fieldDescription><![CDATA[facilities]]></fieldDescription>
</field>

, где поддатой является:

<subDataset name="facilities Dataset">
    <field name="facility" class="java.lang.String">
        <fieldDescription><![CDATA[_THIS]]></fieldDescription>
    </field>
</subDataset>

, чтобы напечатать список строк с использованием listComponent, который я использую

<c:list xmlns:c="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Horizontal">
                    <datasetRun subDataset="facilities Dataset">
                        <dataSourceExpression><![CDATA[$F{facilities}]]></dataSourceExpression>
                    </datasetRun>
                    <c:listContents height="10" width="180">
                        <frame>
                            <reportElement positionType="Float" x="0" y="0" width="180" height="10"/>
                            <textField isStretchWithOverflow="true">
                                <reportElement style="ListComp" x="0" y="0" width="180" height="10"/>
                                <textElement textAlignment="Left" markup="html"/>
                                <textFieldExpression  class="java.lang.String"><![CDATA["<li>" +$F{facility} +"</li>"]]></textFieldExpression>
                            </textField>
                        </frame>
                    </c:listContents>

Для структур я заменил класс Collection в своем поле на

org.apache.struts2.views.jasperreports.ValueStackDataSource

Хотя он выводит правильное количество строк в массиве, значение, которое выводится, равно нулю.

...