Программно получить 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 на вашем портале. Он находится под пунктом "посмотреть и почувствовать" вашего портлета. Для меня это прекрасно работает.

приветствия