Программно получить URL страницы в LifeRay - PullRequest
18 голосов
/ 27 января 2011

Я хочу создать ссылку в портлете, чтобы я мог перейти на другую страницу на портале liferay. Я приказываю сделать так, чтобы я искал API (может быть специфичным для liferay), который, учитывая имя страницы, вернул бы ее url (это также может быть friendlyURL).

Ответы [ 3 ]

12 голосов
/ 15 февраля 2012

Страницы портала в Liferay действительно называются Layouts в API и таблицах БД.Они идентифицируются полем plid, их можно получить с помощью LayoutLocalServiceUtil и связанных API-интерфейсов, а также с помощью некоторых других вызовов, таких как themeDisplay.getLayout().

Однако, чтобы создать строку, содержащую 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.

8 голосов
/ 01 марта 2011

API для доступа к страницам в Liferay - LayoutService. Тем не менее, имена страниц не являются уникальными в Liferay и, более того, они интернационализированы. Таким образом, вам нужно какое-то уникальное свойство для страницы, чтобы получить ее URL, кроме ее имени.

Если у вас действительно есть только имя страницы, вы можете использовать LayoutLocalServiceUtil.getLayouts (...), чтобы перебрать все макеты и проверить какое-либо свойство (в данном случае его имя).

1 голос
/ 21 июля 2014

По крайней мере, в Liferay 6.1.20 можно использовать «Ссылка URL-адреса портлета на страницу», чтобы ссылки переходили на другую страницу вашего портала. Он находится в пункте меню «посмотрите и почувствуйте» вашего портлета. Для меня это прекрасно работает.

ура

...