LIFERAY. PROPIEDADES DE PORTAL.PROPERTIES MODIFICADAS QUE AFECTAN A FREEMARKER Y VELOCITY

Índice de contenidos

Velocity y Freemarker: portal.properties

Hay propiedades en el fichero portal.properties que afectan al procesamiento de plantillas realizadas en Freemarker o Velocity y aquí, aparece uno de los problemas comúnmente asociados al software libre: una nueva versión de la herramienta, puede implicar cambios que afectan a código desarrollado para versiones anteriores.

Es precisamente lo que ha ocurrido con las clases y variables restringidas en Freemarker y Velocity a partir de la versión 6.2 de Liferay. En versiones anteriores nos encontrábamos con:

// Entre otras propiedades...
journal.template.freemarker.restricted.variables=serviceLocator
journal.template.velocity.restricted.variables=serviceLocator

Sin embargo, si nos bajamos el código fuente de Liferay

Selección de Bundle Liferay

Atención: Datos actualizados a 09/01/2017.

En la actualidad, la zona de descarga de Liferay ha cambiado bastante y se ha orientado totalmente hacia la última versión de Liferay en este momento: Liferay 7. Para cualquier descarga de versiones anteriores o de recursos relacionados a esas versiones: Descargas de Liferay.

…, abrimos el fichero /portal-impl/src/portal.properties con un buen editor y buscamos la palabra Velocity o Freemarker, nos daremos cuenta que ya no existen. Lo que ahora tenemos a nuestra disposición es (se indican las propiedades con los valores que vienen por defecto):

Atención: Datos actualizados a 21/12/2015.

freemarker.engine.restricted.classes=\
java.lang.Class,\
java.lang.ClassLoader,\
java.lang.Thread

freemarker.engine.restricted.packages=
freemarker.engine.restricted.variables=serviceLocator

velocity.engine.restricted.classes=\
java.lang.Class,\
java.lang.ClassLoader,\
java.lang.Thread

velocity.engine.restricted.packages=
velocity.engine.restricted.variables=serviceLocator

Por tanto, si queremos acceder a esas variables y clases desde nuestras plantillas Freemarker o Velocity, el clásico fichero portal-ext.properties que sobrescribe a portal.properties contendrá algo como:

freemarker.engine.restricted.classes=
freemarker.engine.restricted.variables=
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=

// Y para guardar compatibilidad hacia versiones anteriores:
journal.template.freemarker.restricted.variables=
journal.template.velocity.restricted.variables=

Parece ser que la razón del cambio es hacer más genéricas estas clases y variables que pueden ser usadas en diferentes contextos.

En cualquier caso, acceder a esas variables y clases en plantillas, implica generalmente que vamos a usar lógica en ellas, lo cual no es recomendable, como tampoco es recomendable el uso de serviceLocator en plantillas, recomendándose mejor usar el método getClass().forName(‘…’). Sobre esto tengo pensado realizar un artículo, así que lo veremos con más profundidad más adelante.

Nada más, un cordial saludo y hasta otra.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Foto Perfil
JOSÉ MANUEL DOMÍNGUEZ ROMERO
Más de 20 años formando y desarrollando, siempre aprendiz, ahora emprendedor que intenta compartir toda esa experiencia y conocimientos.

Nos permitirás agregar más contenido gratis de tu interés con mayor frecuencia

¿Necesitas clases particulares de programación?

Reserva conmigo y recíbelas a través de Skype, Zoom, Hangouts, Discord o similar.

Clases particulares
Logotipo de Orbis Sapientia Elearning Services

Protegemos tus datos

En este portal web procesamos datos personales como, por ejemplo, tus datos de navegación. Si sigues navegando por nuestro portal, nosotros y otras compañías seleccionadas, podrán instalar cookies o acceder a información no sensible de tu dispositivo con el objetivo de crear perfiles, personalizar contenidos, servir anuncios adaptados a tus preferencias y elaborar estadísticas. Es imprescindible para acceder al sitio web, aceptar:
Con este acto reconoces que has leído y comprendido todos ellos.
Algunas cookies son esenciales para la carga del portal y que puedas ver este mensaje por lo que ya han sido cargadas.
Si lo deseas, puedes eliminar y bloquear todas las cookies de esta web tal como se indica en las Políticas de cookies, aunque de hacerlo, el portal no funcionará correctamente.