Deseo crear un enlace en un portlet para poder navegar a una página diferente en el portal de Liferay. Ordeno hacer eso. Estoy buscando una API (puede ser específica de liferay) que, dado el nombre de una página, devolvería su url (también puede ser la URL amigable).Obtenga programáticamente la URL de una página en liferay
Respuesta
La API para acceder a las páginas en Liferay es el LayoutService. Sin embargo, los nombres de las páginas no son únicos en Liferay y, además, están internacionalizados. Por lo tanto, necesita una propiedad única para que una página recupere 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).
Las páginas del portal en Liferay se llaman realmente Layouts
en API y tablas de bases de datos. Están identificados por el campo plid
, se pueden obtener usando LayoutLocalServiceUtil
y API relacionadas, y también desde otras llamadas como themeDisplay.getLayout()
.
Sin embargo, a fin de construir Cadena que contiene el URL de una página que tendrá que concatenar usar el URL de portal, el grupo y el diseño en sí mismo (es decir, /web/guest/home
-web
es URL portal de páginas públicas, es guest
URL amigable del grupo invitado predeterminado y home
es amigable URL de la página de inicio/diseño de forma predeterminada). Esto puede ser complicado, ya que debe comprobar si se trata de una página pública o privada, etc.
Y una vez que comience a utilizar hosts virtuales con URL amigables para grupos, las cosas cambian. Entonces esta no es una buena manera.
Para evitar la creación manual de URL y tener URL que se garantiza que son 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 usted. Aunque también necesita proporcionar ThemeDisplay
y no solo Layout.
Al menos en Liferay 6.1.20 se puede usar 'Vincular URL de portlet a la página' para hacer que los enlaces pasen a otra página en su portal. Está bajo el elemento del menú 'mirar y sentir' de su portlet. Para mí esto funciona bien.
aplausos
- 1. Obtenga direcciones URL amigables para trabajar en Liferay
- 2. PHP Obtenga el contenido de una URL o página
- 3. Zend Framework: Obtenga la página de referencia?
- 4. Obtenga el dominio y el nombre de la página de una String URL
- 5. iPhone: abre una url programáticamente
- 6. Obtenga programáticamente el número de trabajos en una cola Resque
- 7. Obtenga una lista de URL de un sitio
- 8. Obtenga resultados de búsqueda de Google programáticamente
- 9. Obtenga todos los enlaces en la página html?
- 10. Evening in Liferay Portlets
- 11. Obtenga la URL actual de WebView de Cocoa
- 12. Obtener la URL para la página mediawiki dado el Título - programáticamente en PHP
- 13. Recuperar SPList URL programáticamente
- 14. Obtenga la URL al manejar urllib2.URLEror
- 15. ¿Obtenga programáticamente el tamaño de la línea de caché?
- 16. Obtenga una captura de pantalla de una página de ASP.Net
- 17. Obtenga una notificación sobre un cambio de página en UIWebView
- 18. ¿Cómo guardo una página web, programáticamente?
- 19. Toma de captura de pantalla de una página web programáticamente
- 20. Nuevo en Liferay 6.0
- 21. Liferay: cómo configurar Liferay Portal
- 22. Cómo cambiar la página url
- 23. extender la sesión de Liferay al realizar una llamada AJAX
- 24. obtener la página actual de la url
- 25. ¿Cómo encontrar los portlets agregados en una página en particular en Liferay?
- 26. ¿Cómo obtener la URL completa de una página de Drupal?
- 27. ¿Cómo me desplazo programáticamente por la página?
- 28. Obtenga programáticamente maxPostSize de Tomcat HTTP Connector en un JSP
- 29. ¿Cómo puedo acceder a una URL específica programáticamente en Silverlight?
- 30. ¿Cómo agregar el control a la página programáticamente en la carga de la página?
Los nombres no son únicos, pero la propiedad FriendlyURL es única. – Jonny
FriendlyURL no es único AFAIK. Dos páginas (diseños) en diferentes grupos pueden tener la misma URL amigable. En realidad lo harán, porque cuando creas un nuevo grupo usualmente creas una página con una URL amigable "/ home". El hecho es que la URL amigable de una página (Diseño) no contiene una ruta completa (como "/ web/guest/home", "/ web/user/home") sino solo una parte de ella. – mvmn
La combinación de groupId + friendlyURL es única. –