====== Migración de PrimeFaces 6.1 a 8.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 8.0, tenemos que realizar los siguientes pasos: - Primero tenemos que realizar la [[migraciones:fdw2_wls_121_to_wls_122|Migración de Aplicaciones FundeWeb 2.0 de Weblogic 12.1 a 12.2]]. - En el POM principal, cambiamos la versión del //// a //[2.0.100, 2.0.199]// [[https://archiva.um.es/archiva/repository/FundeWeb/es/um/atica/fundeweb/parent/|Parents para aplicaciones FundeWeb 2.0]]. es.um.atica.fundeweb parent [2.0.100, 2.0.199] - En la sección de //// añadimos (o sustituimos si ya existen):[8.0, 8.0.99] [8.0, 8.0.99] [1.9.0, 1.9.9] [2.8.5, 2.8.99] [4.1.1, 4.1.99] 3.1.0 [2.0.6, 2.0.99] - En el POM del módulo Web, hay que modificar la dependencia **//rome//**, cambiando su //// a **//com.rometools//**. Quedando: com.rometools rome - También hay que modificar la dependencia **//jdom//**, cambiando su //// a **//jdom2//**. Quedando: org.jdom jdom2 - Ahora, añadimos las siguiente dependencias en el bloque de PrimeFaces -- (justo antes del comentario **//FIN - Primefaces//**): com.googlecode.owasp-java-html-sanitizer owasp-java-html-sanitizer com.google.guava guava com.googlecode.libphonenumber libphonenumber org.apache.commons commons-collections4 org.apache.commons commons-math3 - Ahora, tenemos que sustituir en la dependencia con artifactId **//fundeweb-tags//**, el artifactId por **//fundeweb-tags-primefaces8//**: es.um.atica.fundeweb fundeweb-tags-primefaces8 - Realizar las guias de migración:\\ [[https://primefaces.github.io/primefaces/8_0/#/../migrationguide/6_0|PrimeFaces Migration Guide from 5.3 to 6.0]] (Si estamos con PrimeFaces 5.3) \\ [[https://primefaces.github.io/primefaces/8_0/#/../migrationguide/6_1|PrimeFaces Migration Guide from 6.0 to 6.1]] (Si estamos con PrimeFaces 5.3) \\ [[https://primefaces.github.io/primefaces/8_0/#/../migrationguide/6_2|PrimeFaces Migration Guide from 6.1 to 6.2]]\\ [[https://primefaces.github.io/primefaces/8_0/#/../migrationguide/7_0|PrimeFaces Migration Guide from 6.2 to 7.0]].\\ [[https://primefaces.github.io/primefaces/8_0/#/../migrationguide/8_0|PrimeFaces Migration Guide from 7.0 to 8.0]] - En la migracion de PrimeFaces 6.2 a 7.0 se indica que hay que dejar de usar la clase **//RequestContext//**, que desaparecera en PrimeFaces 8. Hemos añadido la clase **//PrimeFacesHelper//** para compatibilizar el paso, tiene los mismo métodos para ayudar al cambio. Para utilizarse se añade **//PrimeFacesHelper.instance()//** y usar el mismo método de **//RequestContext//**. - Si en alguna página XHTML o fichero Javascript, tenemos una llamada a la función **//updateToggles//**, ya no es necesaria y hay que quitarla. Ejemplo de lo no necesario: Antes de desplegar en los servidores de los entornos de: desarrollo, sistemas y producción; hay que poner un JIRA a DJ-AT-MIDDLEWARE para indicar el cambio de las librerías de la aplicación, a las librerías 2.0.2, y debe ser un cambio sincronizado con ellos sobre cada entorno a actualizar. ===== FAQ ===== ==== 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 [[https://svn.um.es/svn/SEAM/fundeweb-librerias/Proyectos/fuentes/primefaces-7-0/primefaces-fix/scheduler | 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í Una vez realizado los cambios ya no debería saltar el panel de bloqueo cada vez que se actualice el calendario. ---- --- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 13/12/2019 08:42//