表在Jasper报表JavaBean中不可见
我正在Jasper report中制作一个简单的报告,数据源JavaBean。我正在做一张报告表。在jaspersoft studio中,表是可见的,但是当我生成报告时,表是不可见的,其余的条目是可见的。我已经在细节部分添加了表格。表在Jasper报表JavaBean中不可见,java,jasper-reports,Java,Jasper Reports,我正在Jasper report中制作一个简单的报告,数据源JavaBean。我正在做一张报告表。在jaspersoft studio中,表是可见的,但是当我生成报告时,表是不可见的,其余的条目是可见的。我已经在细节部分添加了表格。 xml代码: <subDataset name="TableDataSet" uuid="c661db1a-6eb7-45f7-9b83-60d1e897aa6e"> <queryString> <
xml代码:
<subDataset name="TableDataSet" uuid="c661db1a-6eb7-45f7-9b83-60d1e897aa6e">
<queryString>
<![CDATA[]]>
</queryString>
<field name="parts" class="java.util.List">
<fieldDescription><![CDATA[parts]]></fieldDescription>
</field>
<field name="width" class="java.lang.Double">
<fieldDescription><![CDATA[width]]></fieldDescription>
</field>
<field name="length" class="java.lang.Double">
<fieldDescription><![CDATA[length]]></fieldDescription>
</field>
</subDataset>
<componentElement>
<reportElement x="213" y="289" width="140" height="60" uuid="d189551d-deb4-4dd2-8124-7d6f98fa8a5f">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.grid.JSSGridBagLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
<property name="net.sf.jasperreports.export.headertoolbar.table.name" value="Parts Table"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="TableDataSet" uuid="d2e7599c-305c-462e-b6ed-a41a271e055f">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:column width="40" uuid="a0e059cc-643c-4015-a824-c6612add40cf">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:columnHeader height="30" rowSpan="1">
<staticText>
<reportElement x="0" y="0" width="40" height="30" uuid="f0b3d3da-0e18-4873-83d6-7b88bb183a10"/>
<text><![CDATA[Parts]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="30">
<textField>
<reportElement x="0" y="0" width="40" height="30" uuid="af940dbe-df85-4655-83c3-50c57b2108a1"/>
<textFieldExpression><![CDATA[$F{parts}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="60" uuid="cc40141d-88d3-40f7-8170-ca977bf9290b">
<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
<jr:columnHeader height="30" rowSpan="1">
<staticText>
<reportElement x="0" y="0" width="60" height="30" uuid="fbd64c97-d94c-4708-afc9-87a49ae1329f"/>
<text><![CDATA[Length]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="30">
<textField>
<reportElement x="0" y="0" width="60" height="30" uuid="4ecc0959-fd6d-4e78-8987-c83c754edff4"/>
<textFieldExpression><![CDATA[$F{length}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="40" uuid="5dc3cf98-b681-4e63-88c1-38bd8f089e04">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:columnHeader height="30" rowSpan="1">
<staticText>
<reportElement x="0" y="0" width="40" height="30" uuid="346fa23f-c442-4800-967c-741b2303c13e"/>
<text><![CDATA[Width]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="30">
<textField>
<reportElement x="0" y="0" width="40" height="30" uuid="beee575e-17c4-402e-8246-68e2ccbc43f5"/>
<textFieldExpression><![CDATA[$F{width}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
我在SO上关注了一些帖子,但没有任何效果。编译jrxml文件后,我可以在Jaspersoft Studio的预览部分看到该表,但在生成报告时看不到该表。有什么帮助吗?发生这种情况有几个原因。例如:
表属性
报告属性 “没有细节”听起来有点疯狂,但这种报告配置也可以做到这一点
密码 您需要将字段集合传递给报表
ArrayList<YourReportObject> reportData = new ArrayList<>();
reportData.add(new YourReportObject());
并以dataSource作为参数填充报表
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);
确保YourReportObject
包含所有$F{…}
字段。变量名必须相等
这里还有一些例子:发生这种情况有几个原因。例如:
表属性
报告属性 “没有细节”听起来有点疯狂,但这种报告配置也可以做到这一点
密码 您需要将字段集合传递给报表
ArrayList<YourReportObject> reportData = new ArrayList<>();
reportData.add(new YourReportObject());
并以dataSource作为参数填充报表
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);
确保YourReportObject
包含所有$F{…}
字段。变量名必须相等
下面是更多的例子:遵循这一点后,我的问题就解决了。我忘了在jr:table组件传递数据源
jrxml中的更正:
在jr:table标记中添加数据源表达式,如下所示:
<datasetRun subDataset="Dataset1">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{parts})]]></dataSourceExpression>
</datasetRun>
这对我很有效。遵循这一点后,我的问题就解决了。我忘了在jr:table组件传递数据源
jrxml中的更正:
在jr:table标记中添加数据源表达式,如下所示:
<datasetRun subDataset="Dataset1">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{parts})]]></dataSourceExpression>
</datasetRun>
这对我很有用。这意味着你的Java代码可能是错误的。@AlexK我只有三列,我已经用Java初始化了这些列,如上所示。通过这种方式,其他字段可以正常工作,但不确定是否有tableBTW,重复项。这意味着您的Java代码可能是错误的。@AlexK我只有三列,我已经用Java初始化了这些列,如上所示。通过这种方式,其他字段正在工作。顺便说一句,重复项不确定。谢谢您的时间和回答。在我的案例中,数据源未正确设置。在这里关注这篇文章,它成功了。谢谢你的时间和回答。在我的案例中,数据源未正确设置。在这里关注这篇文章,它成功了。非常感谢。