java - 使用 JasperReports 生成多个图表时应用程序挂起
问题描述
我正在尝试使用此处描述的方法生成多个图表: How to create multiple charts of same type but with different dataseries using JRBeanCollectionDatasource in Jasperreports
我需要在给定的报告中生成多个图表,List<List<ChartBean<Double,Double>>
其中填充了我从文件中获取的数据。
ChartBean 声明如下:
public class ChartBean<T,U> {
T xCoordinate;
U yCoordinate;
String series;
public ChartBean(T x,U y,String series) {
this.xCoordinate = x;
this.yCoordinate = y;
this.series = series;
}
public void setxCoordinate(T x) {
this.xCoordinate = x;
}
public void setyCoordinate(U y) {
this.yCoordinate = y;
}
public T getxCoordinate() {
return xCoordinate;
}
public U getyCoordinate() {
return yCoordinate;
}
public String setseries() {
return series;
}
public String getseries() {
return series;
}
}
我通过以下方式将参数传递给模板生成器
parameters.put("XYDataSource", values);
,其中值包含坐标列表列表。
我得到的是我的应用程序挂起并且没有生成任何报告。我多次检查了 XML 的内容,它似乎与帖子中描述的一致。我还尝试生成一个图表(不使用列表列表)并且它有效。
我有一个顶级报告,其摘要带包含一个子报告“sub_charts.xml”。在其详细信息带中,我放置了另一个包含折线图的子报表,并使用“_THIS”字段传递List<ChartBean<Double,Double>
子报表的内容在此处报告。
sub_charts.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="subcharts_2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="97e07501-37b1-4c04-970b-33f120c8264d">
<parameter name="REPORT_DIR" class="java.lang.String"/>
<field name="_THIS" class="java.util.List">
<fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
<detail>
<band height="359">
<subreport>
<reportElement x="22" y="25" width="510" height="320" uuid="6ea2325b-969e-472a-9d49-d5c33667fab5"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{_THIS})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{REPORT_DIR}+"/sub_chart.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
sub_chart.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="subchart_2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6cdd6eb2-73da-4026-823b-574910e37c68">
<field name="series" class="java.lang.String"/>
<field name="xCoordinate" class="java.lang.Double"/>
<field name="yCoordinate" class="java.lang.Double"/>
<summary>
<band height="270">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<xyLineChart>
<chart evaluationTime="Report">
<reportElement isPrintRepeatedValues="false" x="0" y="0" width="555" height="270" uuid="4bfd2379-7617-47fb-9c2a-4eeb0b72eadf"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend/>
</chart>
<xyDataset>
<xySeries autoSort="true">
<seriesExpression><![CDATA[$F{series}]]></seriesExpression>
<xValueExpression><![CDATA[$F{xCoordinate}]]></xValueExpression>
<yValueExpression><![CDATA[$F{yCoordinate}]]></yValueExpression>
</xySeries>
</xyDataset>
<linePlot>
<plot/>
<categoryAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</categoryAxisFormat>
<valueAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</valueAxisFormat>
</linePlot>
</xyLineChart>
</band>
</summary>
解决方案
推荐阅读
- c++ - CRTP 在父的析构函数中调用子函数
- r - 为什么在将 avg= "threshold" 更改为 "none" 时使用 ROCR 绘制性能的 Tree 的不同性能图
- python - 使用 Python 创建独立的 Mac OS X 应用程序(外部 ini 文件问题)
- hadoop - hive 动态分区错误:失败:执行错误,从 org.apache.hadoop.hive.ql.exec.mr.MapRedTask 返回代码 2
- android - setTheme 没有改变工具栏
- ios - 找到满足“Firebase/Functions”依赖的规范,但它们需要更高的最小部署目标
- django - 模板渲染时出错 未找到“组编辑”的反向。'group-edit' 不是有效的视图函数或模式名称
- python - 我有 4 个嵌套的 div 标签,当我使用 find_all 打印文本时,它会打印 4 次文本
- python-3.x - 如何在 Tensorflow / Keras 中解释分类交叉熵的值
- php - 如何在多行源代码中显示 print_r 结果