Ich versuche, zwei Ansichten zu kommunizieren, die erste Ansicht innerhalb von Portlet-A und die zweite Ansicht innerhalb von Portlet-B (beide Portlets innerhalb desselben .war). Um dies zu tun, habe ich beschlossen, die Funktionen JSF 'f: viewParam' und 'f: param' zu verwenden, um eine Eigenschaft (aus Portlet-A-Ansicht) in das Anfrageobjekt zu injizieren, so dass die Portlet-B-Ansicht Sie können sie aus dem Anforderungsobjekt abrufen und einen solchen Eigenschaftswert an eine View-Bereichs-Backed-Bean-Eigenschaft übergeben.Anforderungsparameter in Ansichtsbereichs-Bean einspeisen (verschiedene Portlets)
Portlet-A Code anzeigen:
<p:dataScroller value="#{searchManager.List}" var="ccp" >
...
<p:link value="#{ccp.title}" onclick="myonClick(event)" >
<f:param name="id" value="#{ccp.id}" />
</p:link>
...
</p:dataScroller>
JS-Code:
function myonClick(event) {
event.preventDefault();
window.open("viewer", "_blank");
}
anzumerken, dass Portlet-B Ansicht haben sich auf eine Liferay basierte Seite, anders als die eine, wo die anzuzeig Portlet-Eine Ansicht wird angezeigt.
Portlet-B Code anzeigen:
<f:metadata>
<f:viewParam name="id" value="#{resultItemManager.id}" />
</f:metadata>
<h:head />
<h:body>
<p>Details:</p>
<h:outputText value="#{resultItemManager.id}" />
</h:body>
Wenn Portlet-B angezeigt wird, wird das Browser-Adressfeld auf 'http://host:8080/viewer' und dem Tag wird als '0' (Null) gemacht.
Ich weiß nicht, ob die Art, wie ich die gezielte Aufgabe mache, die richtige ist oder nicht. Aber wenn es ist, ich weiß nicht, warum es nicht funktioniert. Also ich würde wirklich jede Hilfe/Kommentare schätzen. Vielen Dank im Voraus.
Es scheint, als ob Sie versuchen, [Inter-Portlet-Kommunikation (IPC)] zu erreichen (https://web.liferay.com/web/meera.success/blog/-/blogs/liferay-inter-portlet-communication -ipc-). Ich würde Ihnen empfehlen, sich die Liferay Faces-Beispielportlets anzusehen. Sehen Sie sich die jsf-ipc-events [Buchungen] an (https://github.com/liferay/liferay-faces-bridge-impl/tree/4.x/demo/jsf-ipc-events-bookings-portlet) und [ Kunden] (https://github.com/liferay/liferay-faces-bridge-impl/tree/4.x/demo/jsf-ipc-events-customers-portlet) portlets ... – stiemannkj1
... oder die [ jsf-ipc-pub-render-params-portlet] (https://github.com/liferay/liferay-faces-bridge-impl/tree/4.x/demo/jsf-ipc-pub-render-params-portlet). – stiemannkj1
Sicherlich ist es eine Aufgabe, die unter einer IPC-Perspektive erfüllt wird. Und die von Ihnen bereitgestellten Links sind geeignet. Ich habe jedoch einen Weg gefunden, das zu lösen, was ich ohne das IPC-Paradigma tun wollte. Die Art der Lösung basiert auf der Verwendung der 'getOriginalServletRequest()' Methode aus der 'com.liferay.portal.util.PortalUtil' Liferay Klasse. – txapeldot