Obtener programáticamente la URL de una página en Liferay
Pregunta
Quiero crear un enlace en un portlet para poder navegar a una página diferente en el portal de Liferay. Ordeno hacer que estoy buscando una API (puede ser específica de Liferay) que dado un nombre de página, devolvería su URL (también puede ser el FriendlyUrl).
Solución
La API para acceder a las páginas en Liferay es el servicio de diseño. Sin embargo, los nombres de las páginas no son únicos en Liferay y, además, se internacionalizan. Por lo tanto, necesita una propiedad única para una página para recuperar su URL, además de su nombre.
Si realmente solo tiene el nombre de la página, puede usar LayoutLocalServiceUtil.getLayouts (...) para recorrer todos los diseños y verificar alguna propiedad (en este caso su nombre).
Otros consejos
Las páginas del portal en Liferay se llaman de hecho Layouts
en API y tablas DB. Están identificados por plid
campo, se puede obtener usando LayoutLocalServiceUtil
y API relacionadas, y también de otras llamadas como themeDisplay.getLayout()
.
Sin embargo, para construir una cadena que contenga URL en una página, tendrá que concatenar una URL amigable de portal, grupo y diseño (es decir /web/guest/home
- web
es URL de portal para páginas públicas, guest
es una URL amigable del grupo de invitados por defecto y home
es una URL amigable de la página/diseño de inicio de forma predeterminada). Esto puede ser complicado, ya que debe verificar si se trata de una página pública o privada, etc.
Y una vez que comienzas a usar hosts virtuales con URL amigables para grupos, las cosas cambian. Así que esta no es una buena manera.
Para evitar crear manualmente las URL y tener URL que se garanticen que sean correctas, debe usar com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
un método estático de PortalUtil
- Hará todo el trabajo necesario para ti. Aunque también necesitas proporcionar ThemeDisplay
Y no solo el diseño.
Al menos en Liferay 6.1.20 se puede usar 'URL de portlet de enlaces a la página' para que los enlaces continúen con la página Antirher en su portal. Está bajo el elemento de menú "Plook and Feel" de su portlet. Para mí esto funciona bien.
salud