For navigating between portlets you should not simply forward or redirect pages, since this is not the way to go. The proper way to communicate between portlets, even on different pages is to use interportlet-communication (IPC), commonly known as portlet wiring.
But it all depends on what you mean with a "JSR286(IBM) portlet". A portlet is either a JSR-286 portlet following the global specs (which are the same for all vendors, IBM, Apache, Oracle, Liferay, ...) or you have a portlet using the IBM API/iWidgets, in the last case, portlet wiring is not possible if I remember correctly from the docs.
Anyways, JSF or not, a JSF 2.0 portlet remains a JSR-286 portlet, so you can use normal events in this case as well, though I'm not experienced in JSF. Both portlets should have a portlet descriptor, in which you can declare:
- The event, using
<event-definition>
. Please note that when your JSF-portlet is in a separate portlet application (in a different portlet.xml
file), you will have to use an XName, not a normal name.
- The events a specific portlet can publish, using
<supported-publishing-event>
(your JSR-286 portlet)
- The events a specific portlet can subscribe to, using
<supported-processing-event>
(your JSF 2.0 portlet)
Afterwards, you can send an event in your JSR-286 portlet from within the ACTION phase, by using the ActionResponse.setEvent()
method.
From the JSF 2.0 portlet, you should still be able to get the PortletRequest
/PortletResponse
from the context. If you check if it is an instance of EventRequest
, you can retrieve the parameter using EventRequest.getEvent()
, allowing you to pass parameters between portlets.
If your portlets are on separate pages, you'll have to got the Administration of WebSphere Portal (I assume you're running that since you're talking about IBM), and define global targets for the pages so that events can be triggered cross-page (otherwise wiring is only available for portlets within the same page).