Программно получить URL страницы в liferay
Я хочу создать ссылку в портлете, чтобы перейти на другую страницу портала liferay. Я хочу сделать это, я ищу API (может быть конкретным для liferay), который дал имя страницы, вернул бы его url (это может быть и friendlyURL).
Ответы
Ответ 1
API для доступа к страницам в Liferay - это LayoutService. Однако названия страниц не уникальны в Liferay, и, кроме того, они интернационализированы. Таким образом, вам нужно уникальное свойство для страницы, чтобы получить его url, помимо его имени.
Если у вас действительно есть только имя страницы, вы можете использовать LayoutLocalServiceUtil.getLayouts(...), чтобы перебрать все макеты и проверить какое-либо свойство (в данном случае его имя).
Ответ 2
Страницы портала в Liferay действительно называются Layouts
в API и таблицах БД. Они идентифицируются полем plid
, могут быть получены с помощью LayoutLocalServiceUtil
и связанных API, а также с некоторыми другими вызовами типа themeDisplay.getLayout()
.
Однако для того, чтобы построить String, содержащий URL-адрес на странице, вам нужно будет объединить дружественный URL-адрес портала, самой группы и макета (т.е. /web/guest/home
- web
является URL-адресом портала для общедоступных страниц, guest
является дружественным URL-адрес гостевой группы по умолчанию и home
- это дружественный URL-адрес домашней страницы/макета по умолчанию). Это может быть сложно, поскольку вам нужно проверить, является ли это общедоступной или закрытой страницей и т.д.
И как только вы начнете использовать виртуальные хосты с дружественными URL-адресами для групп, все изменится. Так что это не очень хорошо.
Чтобы избежать ручного создания URL-адресов и иметь правильные URL-адреса, вы должны использовать com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
статический метод PortalUtil
- он сделает всю необходимую работу для вас. Хотя вам также нужно предоставить ThemeDisplay
, а не только Layout.
Ответ 3
По крайней мере, в Liferay 6.1.20 можно использовать "URL-адрес портлета для страницы", чтобы ссылки переходили на страницу antoher на вашем портале. Он находится под пунктом "посмотреть и почувствовать" вашего портлета. Для меня это прекрасно работает.
приветствия