我正在使用liferay 6.1 CE(Liferay Portal Community Edition 6.1.1 CE GA2(Paton / Build 6101/2012年7月31日))
我想从控制面板portlet图标设置一个表格布局,主题上有链接,用于控制盘中的第一页(默认情况下为空,并显示请从左侧菜单中选择一个工具)消息)
我正在使用钩子来更改html/portal/layout/view/control-panel.jsp
并添加此代码:
<%
String description2 = StringPool.BLANK;
String className2 = "portlet-msg-info";
if (denyAccess||
(themeDisplay.isStateExclusive() ||
themeDisplay.isStatePopUp() ||
(layoutTypePortlet.hasStateMax() && (portlet != null)) ||
Validator.isNotNull(controlPanelCategory)))
{
%>
<%@ include file="/html/portal/layout/view/panel_content.jspf" %>
<%
} else
{
if (Validator.isNull(description2)) {
//khane : here we should load control panel first page
//description = LanguageUtil.get(pageContext, "please-select-a-tool- from-the-left-menu");
%>
<%@ include file="/html/portlet/control_panel_menu/test.jspf" %>
<%
}
}
%>
此代码显示我的页面test.jspf
。如果这是第一个控制面板页面而是“请从左侧菜单中选择一个工具”消息;
但我的问题是关于test.jspf
。
我尝试创建类似于html.portlet/control-panel-menu/view.jsp
的内容,但在处理liferay-portlet:renderURL
标记以创建图标链接时,我收到此错误:
[ActionURL Tag:71] Render response is null because tag is not being called within the context of a portlet
和图标上的链接是相同的页面(控制面板第一页)而不是相应的每个页面。这是我的test.jspf
代码:
<%
String[] allCategories2 = PortletCategoryKeys.ALL;
String controlPanelCategory2 = HttpUtil.getParameter(PortalUtil.getCurrentURL(request), "controlPanelCategory", false);
if (Validator.isNotNull(controlPanelCategory2)) {
allCategories2 = new String[] {controlPanelCategory2};
}
for (String curCategory : allCategories2) {
List<Portlet> portlets = PortalUtil.getControlPanelPortlets(curCategory, themeDisplay);
%>
<ul class="category-portlets">
<%
for (Portlet portlet2 : portlets) {
if (portlet2.isActive() && !portlet2.isInstanceable()) {
String portletId = portlet2.getPortletId();
%>
<li class="<%= ppid.equals(portletId) ? "selected-portlet" : "" %>">
<a href="<liferay-portlet:renderURL doAsGroupId="<%= themeDisplay.getScopeGroupId() %>" portletName="<%= portlet2.getRootPortletId() %>" windowState="<%= WindowState.MAXIMIZED.toString() %>" />" id="<portlet2:namespace />portlet_<%= portletId %>">
<c:choose>
<c:when test="<%= Validator.isNull(portlet2.getIcon()) %>">
1<liferay-ui:icon src='<%= themeDisplay.getPathContext() + "/html/icons/default.png" %>' />
</c:when>
<c:otherwise>
<liferay-portlet:icon-portlet portlet="<%= portlet2 %>" />
</c:otherwise>
</c:choose>
<%= PortalUtil.getPortletTitle(portlet2, application, locale) %>
</a>
</li>
<%
}
}
%>
</ul>
<%
}
%>
请帮忙吗?
答案 0 :(得分:1)
基于ActionURLTag.java(由RenderURLTag.java扩展),似乎应该在portlet的上下文中使用<lifeary-portlet:renderURL>
。它在当前的httpServletRequest中查找javax.portlet.request属性,如果找不到,则会记录错误。
在这里,您在<lifeary-portlet:renderURL>
中使用的html/portal/layout/view/control-panel.jsp
不属于任何portlet,因此您收到此错误。
行动守则ARLTag.java here。