- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在 Jasper 中生成表格报告。具体来说,我正在尝试像这样遍历表中的列表:
Java 代码:
List<String> severity = (List<String>)session.getAttribute("severity");
List<String> messages = (List<String>)session.getAttribute("messages");
LinkedHashMap parameters = new LinkedHashMap();
parameters.put("severity", severity);
parameters.put("messages", messages);
jPrint = JasperFillManager.fillReport(jasperreport,parameters,new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(jPrint,baos);
JRXML:
<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="jasper_report_template" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a3d5ea75-61fe-4bd0-a2ef-43652ca82bb5">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="severity" class="java.util.List">
<fieldDescription><![CDATA[severity]]></fieldDescription>
</field>
<field name="messages" class="java.util.List">
<fieldDescription><![CDATA[messages]]></fieldDescription>
</field>
<columnHeader>
<band height="23" splitType="Stretch">
<staticText>
<reportElement mode="Opaque" x="0" y="-180" width="535" height="15" backcolor="#70A9A9" uuid="9b5b79e0-e146-41d9-b665-6cf9441c44f7"/>
<box>
<bottomPen lineWidth="1.0" lineColor="#CCCCCC"/>
</box>
<text><![CDATA[ ]]></text>
</staticText>
<staticText>
<reportElement x="290" y="0" width="121" height="15" uuid="427a0dc3-acc5-445d-afdf-325f56220d5b"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[Error Severity]]></text>
</staticText>
<staticText>
<reportElement x="0" y="3" width="136" height="15" uuid="9d05c15b-478c-49d3-a334-c5d6bfc62e53"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[Erorr Messages]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="16" splitType="Stretch">
<staticText>
<reportElement mode="Opaque" x="0" y="0" width="535" height="14" backcolor="#E5ECF9" uuid="b0ac6c6e-6d86-44de-801c-fcb85f1c5cb7"/>
<box>
<bottomPen lineWidth="0.25" lineColor="#CCCCCC"/>
</box>
<text><![CDATA[ ]]></text>
</staticText>
<textField>
<reportElement x="290" y="0" width="121" height="15" uuid="d106ecf9-2dc8-49fb-b63c-e348b96f871d"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{severity}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="0" width="136" height="15" uuid="d106ecf9-2dc8-49fb-b63c-e348b96f871d"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{messages}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
所以我的问题是:
1)如何在Jrxml中打印这些列表?
2) 这是在 JRXML 中遍历列表的正确方法吗?
3)如何写JRXML代码迭代List? (子报表在这种情况下有用吗?)
最佳答案
传递两个 LinkedHashMap
并不是您需要实现的最佳数据结构。
如果您像下面这样更改您的数据结构,您的 jrxml
只需稍作更改即可工作。
创建一个包含您的错误的 bean。
public class ErrorBean {
private String severity;
private String messages;
public String getSeverity() {
return severity;
}
public void setSeverity(String severity) {
this.severity = severity;
}
public String getMessages() {
return messages;
}
public void setMessages(String messages) {
this.messages = messages;
}
}
用数据填充你的 bean
//Pass our two LinkList to our new ErrorBean
List<ErrorBean> errorBeans = new ArrayList<ErrorBean>();
for (int i = 0; i < severity.size(); i++) {
ErrorBean eb = new ErrorBean();
eb.setSeverity(severity.get(i));
if (messages.size()>i){
eb.setMessages(messages.get(i));
}
errorBeans.add(eb);
}
将 errorBeans
传递给 JRBeanCollectionDataSource 中的 JasperReport
Map<String,Object> parameters = new HashMap<String,Object>();
jPrint = JasperFillManager.fillReport(jasperreport,parameters,new JRBeanCollectionDataSource(errorBeans));
现在你的设置在 jrxml
中唯一需要的小修改是定义正确的字段类(从 java.util.List
切换到 java.lang .字符串
)
<field name="severity" class="java.lang.String">
<fieldDescription><![CDATA[severity]]></fieldDescription>
</field>
<field name="messages" class="java.lang.String">
<fieldDescription><![CDATA[messages]]></fieldDescription>
</field>
关于java - 如何使用列表在 JasperReports 中生成动态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34736221/
我的 pom 中有以下插件: org.codehaus.mojo jasperreports-maven-plugin
我试图让 JasperReports 嵌入 JasperReports 字体 jar 中存在的字体(来自 DynamicJasper 生成的报告)。我在 jasperreports.propertie
我们在刚下载的 TomEE 应用服务器中出现了奇怪的行为。我们的情况:我们正在运行两个应用程序(我们称之为 v1 和 v2),它们通过使用 JasperReports 的 REST API 为我们提供
当jasperreport在java应用程序中导出为.pdf时,我们如何设置jasperreport的字体。 最佳答案 我需要将西里尔字体导出到 jasperreport 中以生成 pdf。字体必须包
我正在使用 Java 生成 jasper 报告。它有一个学生 bean,其中包含 College_name 和学生信息列表(第二个 bean)。Student_info包含student_Name和地
我正在升级标题中提到的 JasperReports 版本。JasperReports 版本升级我不是很了解。我必须更改所有内容才能使其正常工作。我有所有内容的最新 .jar 文件。但是当我打印我的 .
我想通过 Java 打印 JasperReports 的报告。 所以我写了如下代码 try { String r ="C:\\ireport\\Foods.jrxml";
尝试在 WebLogic 11g 上导出时,它会引发 NoClassDefFound 异常。我检查了应用程序 WAR 并且 jasperreports-3.7.4.jar 包含在 WEB-INF/li
我正在使用 GWT 构建一个网站,我想使用 JasperReports 在网站中加入一个报告生成器。报告绘制的所有数据都存储在云中的数据库中,因此我使用实例和云 sql 连接到数据库并检索/存储数据(
我想分享我对 JasperReports 或多或少常见错误的经验。 在执行JasperReports制作PDF报表时出现异常: java.lang.NoClassDefFoundError: Coul
我正在使用 grails 版本 2.4.0 和 JasperReports 插件:1.9.0(也尝试过版本 jasper-1.10.0-SNAPSHOT),但是当我导出到 pdf 时出现错误。 当我第
我正在尝试使用 java 代码从 jrxml 文件制作 pdf,但它给了我以下错误: SEVERE: Parse Error at line 2 column 487: Document root e
我在 docker openjdk:11.0.1-jdk-slim 内运行 jasperreports 没有错误。 内部openjdk:11.0-jdk-slim(openjdk版本“11.0.6”2
我非常接近这项工作,我试图直接将一个 jasper 子报告嵌入到另一个的主报告 xml 中。你会认为这很容易,但我找不到一个关于这样做的例子。每个人似乎都在使用文件或资源或其他任何东西。我有一个直接从
出于某种原因,我的带有日期和页面 x/y 的页脚只打印在最后一页。有谁知道为什么? 我正在使用 JasperReports 3.1.2和 iReport 3.0.0 . 编辑 :只是为了记录:在我从
这应该是一个关于 JasperReports 的简单问题。我正在尝试对整个报告做一个简单的计数器,该计数器应根据条件递增。但是,无论我尝试什么,似乎计数器变量总是在递增,无论变量表达式如何。我的变量的
有没有办法对 JasperReport 的大小设置限制?我们刚刚查看了一个 WebSphere 6.1 Heapdump,有人试图创建一个报告,结果堆中有 1.5GB 的内存。它使我们的 Websph
我希望在我的项目中使用 JasperReports 4.5.0,并且想知道仅生成 PDF 的最小依赖项是什么。我尝试浏览他们的网站和自述文档,但一无所获。我也遇到过这个installation wik
我只想将数据集中的唯一值打印到列表组件中,避免重复值。 怎么做? 附言我正在使用XML作为数据源。 最佳答案 使用X-Path在数据源中选择节点时,请尝试以下类似的操作。 /root/*[not(te
我想要让 JasperReports 子报表中的行交替显示颜色。我的所有行都具有相同的背景颜色,但我希望它交替。这可以吗? 最佳答案 是的,可以set up a style在 JRXML 文件中,如下
我是一名优秀的程序员,十分优秀!