如何使用Struts插件在Jasper 4.5.1中打印字符串的Arraylist

时间:2012-03-28 08:26:56

标签: struts2 arraylist struts jasper-reports

有没有人设法使用Jasper报告4.5.0在Struts的Javabean中打印ArrayList

在我的测试用例中,我使用Collection作为字段并将其作为子数据集传递,使用_THIS我已经设法在我的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>

对于struts,我用

替换了我的字段中的Collection类
org.apache.struts2.views.jasperreports.ValueStackDataSource

虽然它确实在数组中打印了正确数量的字符串,但打印的值为空。

0 个答案:

没有答案