использование тега liferay-portlet:renderURL в файлах jspf

Я использую liferay 6.1 CE (Liferay Portal Community Edition 6.1.1 CE GA2 (Paton/Build 6101/31 июля 2012 г.))

Я хочу установить макет таблицы из значка портлета панели управления со ссылкой на тему для первой страницы в панели управления (по умолчанию она пуста и показывает сообщение «Выберите инструмент из левого меню»).

Я работаю над хуком, чтобы изменить 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>

<%
}
%>

Любая помощь, пожалуйста??


person user3237100    schedule 25.04.2014    source источник
comment
можете ли вы вставить трассировку стека ошибки, которую вы получаете?   -  person Prakash K    schedule 25.04.2014
comment
просто показывает: [ActionURL Tag:71] Render response имеет значение null, потому что тег не вызывается в контексте портлета   -  person user3237100    schedule 25.04.2014


Ответы (1)


На основе ActionURLTag.java (расширенного RenderURLTag.java) кажется, что <lifeary-portlet:renderURL> следует использовать в контексте портлета. Ищет атрибут javax.portlet.request в текущем httpServletRequest, если не находит, регистрируется ошибка.

Здесь вы используете <lifeary-portlet:renderURL> в html/portal/layout/view/control-panel.jsp, который не является частью какого-либо портлета, поэтому вы получаете эту ошибку.

Кодекс действийURLTag.java здесь.

person Pankaj Kathiriya    schedule 26.04.2014
comment
Танков много для вас ответ - person user3237100; 04.05.2014