Migración de PrimeFaces 6.1 a 7.0

Solo para aplicaciones FundeWeb 2.0 que estan siendo desarrolladas o mantenidas en el IDE de FundeWeb 2.1.

Para poder realizar la migración a PrimeFaces 7.0, tenemos que realizar los siguientes pasos:

  1. En el POM principal, cambiamos la versión del <parent> a [2.0.100, 2.0.199] Parents para aplicaciones FundeWeb 2.0.
    <parent>
    	<groupId>es.um.atica.fundeweb</groupId>
    	<artifactId>parent</artifactId>
    	<version>[2.0.100, 2.0.199]</version>
    </parent>
  2. En la sección de <properties> añadimos:
    <primefaces.version>[7.0, 7.0.99]</primefaces.version>
    <primefaces.extensions.version>[7.0, 7.0.99]</primefaces.extensions.version>
    <gson.version>[2.8.5, 2.8.99]</gson.version>
    <rome.version>[1.9.0, 1.9.9]</rome.version>
    <poi.version>[3.17, 3.99]</poi.version>
    <jdom.version>[2.0.6, 2.0.99]</jdom.version>
  3. En el POM del módulo Web, hay que modificar la dependencia rome, cambiando su <gruopId> a com.rometools. Quedando:
    <dependency>
    	<groupId>com.rometools</groupId>
    	<artifactId>rome</artifactId>
    </dependency>
  4. También hay que modificar la dependencia jdom, cambiando su <artifactId> a jdom2. Quedando:
    <dependency>
    	<groupId>org.jdom</groupId>
    	<artifactId>jdom2</artifactId>
    </dependency>
  5. Añadir la siguiente dependencia al final de las dependencias de Primefaces:
    <dependency>
    	<groupId>com.googlecode.libphonenumber</groupId>
    	<artifactId>libphonenumber</artifactId>
    </dependency>
  6. Realizar las pruebas.
  7. Hablar con MNCS para actualizar las librerías de la aplicación en los servidores de sistemas (Librerías 2.0.1 en Weblogic 12.2).

El componente p:schedule muestra el panel de bloqueo al cargar

Si con la versión anterior de primefaces no te salía el panel del bloqueo y ahora con Primefaces 7 sí te sale se debe a unos cambios que se han hecho en el componente para optimizar su carga.

Ahora en vez de cargarse todo el calendario en una petición, se pinta la estructura y posteriormente mediante llamadas javascript ( PF('miSchedule').update()) se carga el contenido. Esto provoca que no se pueda controlar correctamente cuando aparece o no el panel de bloqueo y que poner el atributo global=“false no funcione.

Para solucionar este problema el componente primefaces nos da un atributo extender que permite sobrescribir el comportamiento del componente fullcalendar que es el que realmente muestra la agenda.

Para ello debemos incorporar a nuestro proyecto el fichero schedule_fix.js dentro de la carpeta src/main/webapp/resources/js

Una vez incluida la librería deberemos ir a nuestro componente calendario y en la propiedad extender añadir initSchedule quedando así

<p:schedule id="schedule1" value="#{manejadorHome.lazyEventModel}" widgetVar="myschedule1" extender="initSchedule"></p:schedule>

Una vez realizado los cambios ya no debería saltar el panel de bloqueo cada vez que se actualice el calendario.


JUAN MIGUEL BERNAL GONZALEZ 13/12/2019 08:42

  • fdw2.0/fundeweb2.0/gt/migracion-primefaces-6_1_a_7_0.txt
  • Última modificación: 18/02/2022 10:53
  • por JUAN MIGUEL BERNAL GONZALEZ