Fórum
2つのポートレットを使って、Popup表示させたポートレットから、裏画面のポートレットを更新させる方法
Yasuyuki GreenG Takeo, modificado 9 Anos atrás.
2つのポートレットを使って、Popup表示させたポートレットから、裏画面のポートレットを更新させる方法
Junior Member Postagens: 30 Data de Entrada: 13/09/12 Postagens Recentes
LiferayではIPC(Inter Portlet Communication)という方法でポートレット間の通信を行うことが可能です。
そのIPCを使って、更にポートレットAからポートレットBをポップアップで表示させ、裏画面のポートレットAを変更するサンプルです。(Liferay 6.2)
IPC-ReciverとIPC-Senderをデプロイし、画面上にはIPC-Reciverだけを配置します。「Popup using Liferay open-window」というリンクがあるので、それをクリックすると、IPC-Senderポートレットが起動します。IPC-Senderの「Beam me!」というリンクをクリックすると、裏のIPC-Reciverのメッセージがランダムに変更されます。
liferay-portlet.xmlに
を指定することで、そのポートレットを画面に配置することなく、別ポートレットから呼び出すことができるようになります。また、
以下の方法でポップアップで表示することができます。IPCsender_WAR_IPCsenderportletはポートレットの名前になります。
IPC-sender側のview.jspで、
とIPC-reciver(裏画面)のリフレッシュをコールして、再描画させています。
そのIPCを使って、更にポートレットAからポートレットBをポップアップで表示させ、裏画面のポートレットAを変更するサンプルです。(Liferay 6.2)
IPC-ReciverとIPC-Senderをデプロイし、画面上にはIPC-Reciverだけを配置します。「Popup using Liferay open-window」というリンクがあるので、それをクリックすると、IPC-Senderポートレットが起動します。IPC-Senderの「Beam me!」というリンクをクリックすると、裏のIPC-Reciverのメッセージがランダムに変更されます。
liferay-portlet.xmlに
<add-default-resource>true</add-default-resource>
を指定することで、そのポートレットを画面に配置することなく、別ポートレットから呼び出すことができるようになります。また、
以下の方法でポップアップで表示することができます。IPCsender_WAR_IPCsenderportletはポートレットの名前になります。
<liferay-portlet:renderurl portletname="IPCsender_WAR_IPCsenderportlet" var="testPopupURL" windowstate="<%=LiferayWindowState.POP_UP.toString()%>">
</liferay-portlet:renderurl>
<aui:script>
function <portlet:namespace />showPopup(url) {
var url = url;
Liferay.Util.openWindow(
{
dialog: {
cache: false,
width:800,
modal: true
},
id: 'testPopupIdUnique',
uri: url
}
);
}
</aui:script>
<a href="javascript: <portlet:namespace />showPopup('<%=testPopupURL%>')">
Popup using Liferay open-window
</a>
IPC-sender側のview.jspで、
parent.Liferay.Portlet.refresh('#p_p_id_IPCreciver_WAR_IPCreciverportlet_');
とIPC-reciver(裏画面)のリフレッシュをコールして、再描画させています。