Да предположим, че имам екземпляр на 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 адрес на страницата?