Compare el número de página actual con el último número de página

¿Cómo verifica si la página impresa actual es realmente la última página impresa?

He probado lo siguiente:

$V{currentPage}.intValue() == $V{totalNumberOfPages} ? Boolean.TRUE : Boolean.FALSE 

    esperé por un largo tiempo … pero no recibí respuesta de Stackoverflow … De todos modos encontré mi solución …

    Primero en su banda de resumen ponga esta línea

     < ![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]> 

    Recuerde que esta línea anterior debe estar solo en la banda de resumen del informe.

    Después de eso, puede comparar este parámetro en cualquier momento de su informe para encontrar el último número de página.

    Por ejemplo

     < ![CDATA[new Boolean(!$V{PAGE_NUMBER}.equals($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber")))]]> 

    Con la siguiente impresión cuando la expresión la banda de resumen se imprime de nuevo:

     new Boolean(($P{REPORT_PARAMETERS_MAP}.put( "LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen")) || Boolean.TRUE) 

    También puede usar la prueba de containskey para la existencia de la clave:

     new Boolean(!$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber")) 

    Las expresiones numéricas también funcionan, esta expresión se evalúa como verdadera en todas las páginas excepto en aquella en la que se establece el parámetro:

     new Boolean($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber") < $V{PAGE_NUMBER}) 

    Mi problema fue que creé varios pies de página de grupo para varias tablas cruzadas al final de mi informe, con una expresión de grupo constante para que solo se impriman una vez. Al establecer el parámetro en el primer pie de página ahora puedo finalmente presionar los encabezados de las columnas sin recurrir a los subinformes. ¡¡Buen trabajo!!

    Baya.

    Desafortunadamente, su enfoque no funcionó para mí. No sé por qué. Hay algunas cosas sobre su código que son propensas a errores como esta.

     < ![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]> 

    Creo que de hecho, la Summary Band se llama solo una vez, pero tiene una mala práctica de progtwigción en esto porque si no hay una clave asociada con la KEY in the MAP , devolverá nulo y usted llamará al método equals que recibiría. NULLPOINTEREXCEPTION pero creo que no en este caso.

    deberías revertir así

     < ![CDATA[new Boolean("dummyPrintWhen".equals($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER})))]]> 

    la solución que utilicé en esta pregunta es la siguiente.

    1). crea un parámetro en jasperreports

     parameter name="totalRecordsOnReport" class="java.lang.Integer" 

    2). pase los registros de totales de su detalle como parámetro.

     HashMapparameters=.... parameters.put("totalRecordsOnReport",yourDetailRowCount); 

    Necesito imprimir algunas cosas solo en la última página debajo de los detalles y uso este código.

    component print when expression

     $V{REPORT_COUNT}.equals($P{totalRecordsOnReport}) 

    e imprime en la última página.