Java 多个Jasper repports页码处理程序,带密钥

Java 多个Jasper repports页码处理程序,带密钥,java,jasper-reports,Java,Jasper Reports,嗨,各位飞越者 我有两份jasper报告。两者都以零页码开始。我希望我的第二份报告从第一份jasper报告的总页数+1开始。我已经在这个问题上看到了很好的解决方案,但这不是我想要的。例如,我想用一个id处理类似jasper report的html标记,然后感谢这个id,获取我的文本字段并更改java代码中的页码值 例如,我的文本字段类似于: <textField> <reportElement x="520" y="1" width="40" height="48"

嗨,各位飞越者

我有两份jasper报告。两者都以零页码开始。我希望我的第二份报告从第一份jasper报告的总页数+1开始。我已经在这个问题上看到了很好的解决方案,但这不是我想要的。例如,我想用一个id处理类似jasper report的html标记,然后感谢这个id,获取我的文本字段并更改java代码中的页码值

例如,我的文本字段类似于:

<textField>
    <reportElement  x="520" y="1" width="40" height="48" uuid="5df12c06-9c58-4b26-99c1-02b1d8e86456"/>
    <box>
        <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
    </box>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>

我也有同样的问题,我就是这样解决的。在您的文本文件中,您需要一个密钥。它将是您的id。你应该有这样的东西:

<textField>
    <reportElement key="textFieldCurrentPage" x="520" y="1" width="40" height="48" uuid="5df12c06-9c58-4b26-99c1-02b1d8e86456"/>
    <box>
        <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
    </box>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>

在java代码中,可以有如下内容:

// create your second jasper print
JasperPrint jasperPrint = JasperFillManager.fillReport(..., ..., ...);

List<JRPrintPage> listPages = jasperPrint.getPages();
int numberOfPages = listPages.size();
int currentPageIndex = 1;
for (JRPrintPage currentPage : listPages) {
    List listElements = currentPage.getElements();

    for (Object element : listElements) {
        if (element instanceof JRTemplatePrintText) {
            JRTemplatePrintText templatePrintText = (JRTemplatePrintText) element;
            // set currrent page
            if (templatePrintText.getKey() != null
                    && templatePrintText.getKey().equalsIgnoreCase("textFieldCurrentPage")) {
                    templatePrintText.setText(String.valueOf(lastPageNumber + currentPageIndex));
            }
        }
    }
    currentPageIndex++;
}
//创建第二张jasper打印
JasperPrint JasperPrint=JasperFillManager.fillReport(…,…,…);
List listPages=jasperPrint.getPages();
int numberOfPages=listPages.size();
int currentPageIndex=1;
用于(JRPrintPage当前页面:listPages){
List listElements=currentPage.getElements();
for(对象元素:列表元素){
if(JRTemplatePrintText的元素实例){
JRTemplatePrintText templatePrintText=(JRTemplatePrintText)元素;
//设置当前页面
如果(templatePrintText.getKey()!=null
&&templatePrintText.getKey().equalsIgnoreCase(“textFieldCurrentPage”)){
templatePrintText.setText(String.valueOf(lastPageNumber+currentPageIndex));
}
}
}
currentPageIndex++;
}
我希望这能帮助你