Get it on Google Play

Acceso a la capa de servicios desde plantillas en Liferay 7/DXP, una de cal y una de arena

22-08-2017
 

El sistema de plantillas de Liferay es tremendamente potente creo que casi desde todas las versiones(Por lo menos, yo empecé en la versión 5.2.3) podemos hacer uso de la capa de servicio del portal y también de los servicios creados utilizando Service Builder.

Si queremos hacer uso de un servicio desde una plantilla FTL(FreeMarker):

<#assign jas = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>

Como vemos en el ejemplo para acceder al servicio de ‘JournalArticle’ lo hacemos mediante el objeto inyectado ‘serviceLocator’. Ahora con la variable ‘jas’ tenemos acceso a todo el servicio JournalArticleLocalServiceUtil, tenemos el Javadoc en el siguiente enlace: https://docs.liferay.com/ce/apps/web-experience/latest/javadocs/com/liferay/journal/service/JournalArticleLocalServiceUtil.html.

Una de cal en Liferay 7.0

Ahora para hacer uso de ‘serviceLocator’ deberemos asegurarnos de que no esté configurada como ‘Restricted Variable'(Que es como viene por defecto en esta versión). Para poder cambiar esta configuración deberemos ir a “Control Panel”=>”System Settings”=>”Foundation”, allí buscar “FreeMarker Engine” y quitarla de la lista de variables restringidas.

En esta configuración encontrareis también otras variables y classes restringidas.

Liferay Control Panel Freemarker

Liferay Control Panel Freemarker

Una de arena en Liferay 7.0

Ahora, cuando buscamos un servicio mediante ‘serviceLocator.findService’ se hace exactamente igual si el servicio es del portal o creado por nosotros con Service Builder, no hay que configurar nada. En versiones anteriores en el método ‘findService’ había que pasarle como parámetro el contexto del plugin que implementaba el servicio. Ahora es un poquitín mas fácil y rápido.

Interesado en formación Liferay?

 

Leave a Reply

© Albert Coronado Calzada