4

实际上在一个页面上我有 2 个 portlet 但我想通过单击submit按钮隐藏第一个 portlet 并且只有第二个 portlet 应该可见我使用了以下代码:

document.getElementById("portlet-id").style.visibility='none'

但是在刷新页面后,portlet 再次可见,任何人都可以为我提供有关如何继续进行的解决方案。

4

2 回答 2

5

您可以使用以下代码在 JSPvisibility中将 portlet 的设置为:false

<%
renderRequest.setAttribute(WebKeys.PORTLET_CONFIGURATOR_VISIBILITY, Boolean.FALSE);
%>

这将从用户的视图中隐藏您的 portlet。

每次呈现 portlet 时,您都可以检查在请求或会话中设置的参数(您的选择)以显示 portlet 或不显示 portlet,例如:

<%
String paramFromRequestToHide = renderRequest.getParameter("hidePortlet");
// can also fetch from session: portletSession.getAttribute("hidePortlet");

if (paramFromRequestToHide .equals("YES")) { // you can use your favorite data-type
    renderRequest.setAttribute(WebKeys.PORTLET_CONFIGURATOR_VISIBILITY, Boolean.FALSE);
} else {
    renderRequest.setAttribute(WebKeys.PORTLET_CONFIGURATOR_VISIBILITY, Boolean.TRUE);
}
%>

另一种方法:


如果您不想使用上述方法,则可以将您的 javascript 方法与参数方法结合起来,如下所示:

<%
String paramFromRequestToHide = renderRequest.getParameter("hidePortlet");

if (paramFromRequestToHide .equals("YES")) {
%>

<aui:script>
    Liferay.Portlet.ready(

    /*
    This function gets loaded after each and every portlet on the page.

    portletId: the current portlet's id
    node: the Alloy Node object of the current portlet
    */
        function(portletId, node) {
            document.getElementById(portletId).style.display = 'none';
            // or alternatively using pure Alloy UI
            // node.hide();
        }
    );
</aui:script>

<%
} else {
%>

<aui:script>
    Liferay.Portlet.ready(
        function(portletId, node) {
            document.getElementById(portletId).style.display = 'block';
            // or alternatively using pure Alloy UI
            // node.show();
        }
    );
</aui:script>

<%
}
%>

如果您想查看Alloy UI API和一些演示来学习 Alloy UI,因为从 Liferay 6.1 开始,Alloy UI 是 liferay 的事实上的 javascript 库。现在 Alloy UI 有一个官方网站,其中包含许多有用的教程和示例。

希望这能为您提供足够的材料继续进行:-)

于 2012-11-26T10:57:32.817 回答
0

你也可以这样做:

如果您的 portlet id 是: callcenter_WAR_xyzyportlet

$('#p_p_id_callcenter_WAR_xyzyportlet_').css({display:'none'});

于 2016-01-08T05:13:25.280 回答