4

実際には 1 つのページに 2 つのポートレットがありますが、ボタンをクリックして最初のポートレットを非表示にしたいのでsubmit、2 番目のポートレットのみを表示する必要があります。次のコードを使用しました。

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

しかし、ページを更新した後、再びポートレットが表示されるようになりました。どうすれば進められるかについて、誰かが私に解決策を提供してくれますか?

4

2 に答える 2

5

次のコードを使用してvisibility、ポートレットの をJSP に設定できます。false

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

これにより、ポートレットがユーザーから見えなくなります。

ポートレットがレンダリングされるたびに、リクエストまたはセッション (選択したもの) で設定されたパラメーターをチェックして、ポートレットを表示するか、ポートレットを表示しないかを次のように指定できます。

<%
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>

<%
}
%>

Liferay 6.1以降、Alloy UIはliferayの事実上のjavascriptライブラリであるため、Alloy UI APIといくつかのデモをチェックアウトしてAlloy UIを学びたい場合。現在、Alloy UI には公式 Web サイトがあり、多くの役立つチュートリアルと例が掲載されています。

これにより、先に進むための十分な資料が得られることを願っています:-)

于 2012-11-26T10:57:32.817 に答える
0

次のようにすることもできます。

ポートレット ID が次の場合: callcenter_WAR_xyzyportlet

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

于 2016-01-08T05:13:25.280 に答える