java - 我需要接收一个包含数组的 java 数组并在表格中生成报告
问题描述
我需要在参数字段上运行数据集,该字段是我从 Java 代码接收的集合。
我在尝试
<datasetRun subDataset="EstruturaOrganicaDTO" uuid="c3ec8434-efe9-4dbe-8c1a-4ba8be684bda">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRMapCollectionDataSource($P{EstruturasOrganicas}.getFieldValue( $F{estruturaOrganica}))]]></dataSourceExpression>
</datasetRun>
这是我的报告,它只是说他找不到字段
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="objetivo" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6cbf12c5-03fc-4c49-ac33-e581f0aa391f">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="EstruturaOrganica" uuid="37e37553-5bbd-4474-aa35-1138420f9b25">
<queryString>
<![CDATA[]]>
</queryString>
<field name="codDivisao" class="java.lang.String"/>
<field name="nomeDivisao" class="java.lang.String"/>
<field name="siglaDivisao" class="java.lang.String"/>
<field name="missao" class="java.lang.String"/>
<field name="visao" class="java.lang.String"/>
</subDataset>
<subDataset name="EstruturaOrganicaDTO" uuid="8cc2ff0b-66f4-4417-bd17-d8d1ed73473a">
<queryString>
<![CDATA[]]>
</queryString>
<field name="estruturaOrganica" class="java.util.Collection"/>
</subDataset>
<subDataset name="Dataset1" uuid="daf8a3e2-f448-4dbe-88ff-e1095ed9337e">
<queryString>
<![CDATA[]]>
</queryString>
</subDataset>
<parameter name="EstruturasOrganicas" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
<queryString>
<![CDATA[]]>
</queryString>
<detail>
<band height="284" splitType="Stretch">
<componentElement>
<reportElement x="100" y="47" width="200" height="200" uuid="78b36e22-df70-4de8-87db-5011ead4bc8a">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<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"/>
</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="EstruturaOrganicaDTO" uuid="c3ec8434-efe9-4dbe-8c1a-4ba8be684bda">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRMapCollectionDataSource($P{EstruturasOrganicas}.getFieldValue( $F{estruturaOrganica}))]]></dataSourceExpression>
</datasetRun>
<jr:column width="40" uuid="5dcf02b8-6426-497a-8624-d08f06632a5a">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30"/>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30"/>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>
我想在参数领域进行迭代。
我正在用 Java 做这个
List <EstruturaOrganicaDTO> constatacoes1 = new ArrayList<>();
EstruturaOrganicaDTO estruturaOrganicaDTO = new EstruturaOrganicaDTO();
estruturaOrganicaDTO
.setEstruturaOrganica(
new ArrayList<EstruturaOrganicaEntity>( ));
estruturaOrganicaDTO.getEstruturaOrganica().add(new EstruturaOrganicaEntity("abc", "123",
"fdh", "123", "2456", false));
JRBeanCollectionDataSource beanCollectionDataSource1 = new JRBeanCollectionDataSource(constatacoes1);
final String jasperReportPath = "jasper-templates/objetivo.jrxml";
InputStream inputStreamTemplate = this.environment.resourceAsStream(jasperReportPath);
JasperReport report = JasperCompileManager.compileReport(inputStreamTemplate);
Map<String, Object> parametros = new HashMap<>();
parametros.put("EstruturasOrganicas", beanCollectionDataSource1);
JasperPrint print = JasperFillManager.fillReport(report, parametros, new JREmptyDataSource());
File pdf = File.createTempFile("temp", ".pdf");
pdf.deleteOnExit();
JasperExportManager.exportReportToPdfStream(print, new FileOutputStream(pdf));
解决方案
推荐阅读
- mongodb - Mongo DB 显示错误计数
- flutter - 在构建小部件之前获取 SharedPreferences
- php - PHP查询不会插入数据库,其他2个查询正在工作
- android - Java项目开发的导入Ionic项目
- javascript - 如何使用 jQuery 选择单击元素父元素的元素?
- excel - 如何将符号矩阵导出到excel?
- python - 为什么 vtkImageStencil.SetInputData() 给出和参数错误?
- java - Apache Archiva Maven 相关
- ios - 在 Alamofire 上使用 DisableEvaluation 信任无效证书
- oauth-2.0 - 我们的用例需要什么 Oauth2 或 SSO