Как включить разные заголовки страниц на последних и средних страницах в отчетах 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
группа!