【发布时间】:2013-04-30 17:51:04
【问题描述】:
假设我有 Layout 实例(在 Java 或 JSP 中)并且我想获取它的 URL。
布局代表一个页面。页面有“友好 URL”,我可以通过 friendlyURL 属性获取它。
但是完整的网址呢?
我也可以得到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 恐怕在普通的portlet 中无法访问。
那么,如何获取页面实例的完整 URL?
【问题讨论】: