gpt4 book ai didi

java - 如何将任意对象作为参数传递给 jasper 报告?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:50 26 4
gpt4 key购买 nike

我想将我域中的任意对象作为参数传递给我的 .jrxml,例如一个人。

InputStream reportFile = MyPage.this.getClass().getResourceAsStream("test.jrxml");
HashMap<String, Person> parameters = new HashMap<String, Person>();
parameters.put("person", new Person("John", "Doe"));
...
JasperReport report = JasperCompileManager.compileReport(reportFile);
JasperPrint print = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());
return JasperExportManager.exportReportToPdf(print);

然后在 .jrxml 上做类似的事情:

<?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="test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="PERSON" isForPrompting="false" class="myApp.domain.person"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[$P{PERSON.lastName}]]></text>
</staticText>
</band>
</title>
...

这样的事情可能吗?我在哪里可以找到比传递 java.lang.String 更复杂的教程?

谢谢

最佳答案

是的,您可以传递任何 Java 对象,但您应该确保在 JRXML 中导入该对象。

在 jasperReport 标签内。您可以使用标签 import,例如:

 <jasperReport...>
<import value="org.justfortest.Person">

但是,您可以使用 JRBeanCollectionDataSource 并使用您的对象列表填充报告,而无需在参数映射中存储任意对象。

查看本教程以获取有关 Jasper Reports Bean Collection Data Source 的更多信息

关于java - 如何将任意对象作为参数传递给 jasper 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com