首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有手动标记的pdf报告抛出EmptyStackException

带有手动标记的pdf报告抛出EmptyStackException
EN

Stack Overflow用户
提问于 2020-08-07 21:51:13
回答 1查看 164关注 0票数 1

我有一个spring webapp,在那里我使用JasperReports生成一些基本的数据库查询报告,并导出到pdf。

我尝试使用dynamic-jasper以编程方式添加标签,而不是使用jrxml,但遇到了不同的问题。我的jrxml文件几乎是Jaspersoft Studio的tabular-report.jrxml示例的副本。让我知道如果你需要看一些其他的东西来解决这个问题,在这一点上任何帮助都是非常感谢的。

找到了这个,但没有解决方案:https://community.jaspersoft.com/questions/1112221/error-manulal-tagging-table-pdf-export

下面是我的jrxml文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ....>
    <style>....
    </style>
    <queryString>
        This works, deleted because its sensitive.
    </queryString>
    <field name="last_login" class="java.sql.Timestamp"/>
    <field name="first_name" class="java.lang.String"/>
    <field name="middle_name" class="java.lang.String"/>
    <field name="last_name" class="java.lang.String"/>
    <field name="IAL" class="java.lang.Integer"/>
    <field name="xid" class="java.lang.String"/>
    <field name="email" class="java.lang.String"/>
    <title>
        <band height="45">
            <staticText>
                <reportElement style="reportTitleStyle" positionType="Float" x="0" y="0" width="595" height="30">
                    <property name="net.sf.jasperreports.export.pdf.tag.h1" value="full"/>
                </reportElement>
                <textElement/>
                <text><![CDATA[User Login Report]]></text>
            </staticText>
            <textField>
                <reportElement style="subTitleStyle" positionType="Float" x="0" y="30" width="595" height="15">
                    <property name="net.sf.jasperreports.export.pdf.tag.h2" value="full"/>
                </reportElement>
                <textElement/>
                <textFieldExpression>
                    <![CDATA["This report was generated at " + new java.util.Date()]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <pageHeader>
        <band height="30">
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="95" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.table" value="start"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["Last Login"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="95" y="0" width="83" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["First Name"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="178" y="0" width="59" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["Middle Name"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="237" y="0" width="83" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["Last Name"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="320" y="0" width="35" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["IAL"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="355" y="0" width="59" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["XID"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="414" y="0" width="141" height="30" isPrintWhenDetailOverflows="true">
                    <property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
                    <property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
                </reportElement>
                <textElement/>
                <textFieldExpression><![CDATA["Email"]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <detail>
        <band height="15" splitType="Immediate">
            <frame>
                <reportElement x="0" y="0" width="555" height="15">
                    <property name="net.sf.jasperreports.export.pdf.tag.tr" value="full"/>
                </reportElement>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="timeStampColumnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="95" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{last_login}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="95" y="0" width="83" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{first_name}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="178" y="0" width="59" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{middle_name}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="237" y="0" width="83" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{last_name}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="320" y="0" width="35" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{IAL}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="355" y="0" width="59" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                    </reportElement>
                    <textFieldExpression><![CDATA[$F{xid}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="414" y="0" width="141" height="15" isPrintWhenDetailOverflows="true">
                        <property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
                        <property name="net.sf.jasperreports.export.pdf.tag.table" value="end"/>
                    </reportElement>
                    <textElement textAlignment="Right"/>
                    <textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
                </textField>
            </frame>
        </band>
    </detail>
</jasperReport>

错误:

代码语言:javascript
复制
java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.createTrStartTag(JRPdfExporterTagHelper.java:664)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.createStartTags(JRPdfExporterTagHelper.java:589)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.startElement(JRPdfExporterTagHelper.java:499)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:1241)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:1210)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:1074)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:691)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-09 20:59:56

该错误是由net.sf.jasperreports.export.pdf.tag.table=end属性引起的,该属性是在报表的详细信息区域中的元素上设置的。细节带对查询结果中的每条记录重复,因此在细节带中设置net.sf.jasperreports.export.pdf.tag.table=end是没有意义的。

应在仅在表格/页面末尾打印一次的元素上设置该属性,例如,在页脚区域中:

代码语言:javascript
复制
<pageFooter>
    <band height="1">
        <textField>
            <reportElement x="0" y="0" width="100" height="1">
                <property name="net.sf.jasperreports.export.pdf.tag.table" value="end"/>
            </reportElement>
            <textFieldExpression>""</textFieldExpression>
        </textField>
    </band>
</pageFooter>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63303229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档