【问题标题】:Fill data of sub report with master report field value用主报表字段值填充子报表的数据
【发布时间】:2013-07-16 15:17:35
【问题描述】:

我正在使用 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 参数?

我的例外是:

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]

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

【问题讨论】:

    标签: java jasper-reports report


    【解决方案1】:

    我找到了解决方案here

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多