有没有人设法使用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
虽然它确实在数组中打印了正确数量的字符串,但打印的值为空。