Как включить разные заголовки страниц на последних и средних страницах в отчетах jasper?

Мне нужно включить отчеты с 3 типами заголовков страниц: «заголовок первой страницы», «заголовок средних страниц» и «заголовок последней страницы». Все эти заголовки могут иметь разное количество элементов отчета и на разных позициях. То же самое касается нижних колонтитулов.

НОТА: Отчет должен поддерживать такие элементы отчета, какмладший: таблица или жемладший: список в егоDetail группа. Эти элементы должны предоставляться с данными через источники данных xml.

Мне удалось смоделировать заголовок первой страницы с помощьюTitle группа, но у меня проблемы с включением "заголовка средних страниц" и "заголовка последней страницы". Вот что я пытаюсь сделать:

<pageHeader>
<band height="100" splitType="Stretch">
    <frame>
        <reportElement x="0" y="0" height="100" width="555" uuid="f788c74b-6853-4bc7-8ed7-5e3d538287c9" isRemoveLineWhenBlank="true">
            <printWhenExpression>
                <![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
            </printWhenExpression>
        </reportElement>
        <staticText>
            <reportElement x="1" y="1" width="100" height="20" uuid="9777208b-5323-4045-aa49-a849d5c00c89"/>
            <text><![CDATA[LAST PAGE HEADER TEXT 1]]></text>
        </staticText>
        <staticText>
            <reportElement x="50" y="10" width="200" height="50" uuid="15313676-09e6-4d17-ac75-2df99f61bfee"/>
            <text><![CDATA[LAST PAGE HEADER TEXT 2]]></text>
        </staticText>
    </frame>
    <frame>
        <reportElement x="0" y="0" height="100" width="555" uuid="65577abd-8717-477a-f27e-c70e9eba46af" isRemoveLineWhenBlank="true">
            <printWhenExpression>
                <![CDATA[new Boolean($V{PAGE_NUMBER} != 1) && new Boolean($V{PAGE_NUMBER} != $V{PAGE_COUNT})]]>
            </printWhenExpression>
        </reportElement>
        <staticText>
            <reportElement x="70" y="0" width="300" height="100" uuid="0a866eb3-85cf-4376-d6a4-21b534d36df0"/>
            <text><![CDATA[MIDDLE PAGE HEADER TEXT 1]]></text>
        </staticText>
    </frame>
</band>
</pageHeader>

я используюframe блоки вместе сprintWhenExpression, В зависимости отprintWhenExpression состояние, только один из двухframe блоки должны быть напечатаны (со всем его содержанием). Первый кадр должен отображать «заголовок последней страницы», а второй - «заголовок средних страниц».

Проблема заключается в первомframe («заголовок последней страницы»)printWhenExpression:

<printWhenExpression>
    <![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
</printWhenExpression>

В этом случае,$V{PAGE_NUMBER} всегда равняется$V{PAGE_COUNT} из-за времени оценки.

Есть ли способ проверить, является ли текущая страница последней страницей? Кроме того, есть ли другой способ включить заголовки "средних страниц" и "последней страницы"?

НОТА: Я смог реализовать аналогичную логику для нижних колонтитулов с помощьюframes а такжеLast Page Footer группа!

Ответы на вопрос(1)

Ваш ответ на вопрос