gpt4 book ai didi

java - 用主报表字段值填充子报表数据

转载 作者:行者123 更新时间:2023-11-30 11:30:42 29 4
gpt4 key购买 nike

我正在使用 iReport 5.0

我的 subReport 没有收到需要显示的对象列表。我如何在不使用数据库连接的情况下将此列表从主报告提供给 subReport

说明情况:
-我有一个问题列表,每个问题都有一个答案列表和正确答案的百分比。

Java 上:

JRBeanCollectionDataSource beanCollection2 = new JRBeanCollectionDataSource(listOfQuestions);
JasperPrint jasperPrint2 = JasperFillManager.fillReport(FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/resources/Report/SurveyGeneralReport.jasper"),
new HashMap<String,Object>(), beanCollection2) ;

在我的 SurveyGeneralReport.jrxml 上我有:

<parameter name="ROOT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["example\\resources\\Report\\"]]></defaultValueExpression>
</parameter>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{ROOT_DIR} + "SubReport\\"]]></defaultValueExpression>
</parameter>
.
.
.
.
<detail>
<band height="68" splitType="Stretch">
<textField>
<reportElement uuid="bdd12e8b-f8f6-4aea-b2ff-d17255fb6559" x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{question}]]></textFieldExpression>
</textField>
<subreport>
<reportElement uuid="01c7d5a6-c89d-4c56-a14e-18ac5eeb1a71" x="100" y="20" width="415" height="48"/>
<subreportParameter name="answers">
<subreportParameterExpression><![CDATA[$F{answers}]]></subreportParameterExpression>
</subreportParameter>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "AnswersubReport.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>

在 AnswersubReport.jrxml 上:

<parameter name="answers" class="java.util.Collection"/>
<field name="answerValue" class="java.lang.String"/>
<field name="answerPercentage" class="java.lang.String"/>

那么我如何告诉子报表迭代 answers 参数呢?

我的异常(exception)是:

15:12:21,821 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/admin/round].[Faces Servlet]] Servlet.service() para servlet Faces Servlet lanzó excepción: java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRPrintBand.addOffsetElements(JRPrintBand.java:101) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRFillElementContainer.addSubElements(JRFillElementContainer.java:623) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRFillElementContainer.fillElements(JRFillElementContainer.java:600) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:406) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:352) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2023) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765) [:4.1.3]
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) [:4.1.3]
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) [:4.1.3]
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:605) [:4.1.3]

如果我能更清楚,请向我询问更多详细信息。

最佳答案

我找到了解决方案 here

我做的是一个数据源表达式,

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{answers})

关于java - 用主报表字段值填充子报表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661396/

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