Предположим, у меня есть экземпляр Layout (на Java или JSP), и я хочу получить его URL-адрес.
Макет представляет собой страницу. Страница имеет «дружественный URL», и я могу получить его по свойству friendlyURL
.
А как насчет ПОЛНОГО URL?
Я также могу получить дружественный URL scopeGroup
, где
Group scopeGroup = themeDisplay.getScopeGroup();
и получить более короткую часть, которая также не является полной.
Company.getPortalURL
также не содержит всего остального текста (не включает части порта и "/web").
Внутри \ROOT\html\portlet\layouts_admin\layout\details.jsp
я нашел следующий код для его сборки
boolean privateLayout = ((Boolean)renderRequest.getAttribute("edit_pages.jsp-privateLayout")).booleanValue();
Layout selLayout = (Layout)renderRequest.getAttribute("edit_pages.jsp-selLayout");
StringBuilder friendlyURLBase = new StringBuilder();
friendlyURLBase.append(themeDisplay.getPortalURL());
LayoutSet layoutSet = selLayout.getLayoutSet();
String virtualHostname = layoutSet.getVirtualHostname();
if (Validator.isNull(virtualHostname) || (friendlyURLBase.indexOf(virtualHostname) == -1)) {
friendlyURLBase.append(scopeGroup.getPathFriendlyURL(privateLayout, themeDisplay));
friendlyURLBase.append(scopeGroup.getFriendlyURL());
}
но этот код основан на странных параметрах edit_pages.jsp-privateLayout
и edit_pages.jsp-selLayout
, которые, боюсь, не будут доступны в обычном портлете.
Итак, как получить ПОЛНЫЙ URL экземпляра страницы?