Problem inter-portlet-communication
jeromej Nov 9, 2012 12:17 PMhi
I'm sending events between porlet.
Porltet visible on the same page than the portlet publishing the event are receiving the event.
But portlet that are not visible on the page (but still alive) don't receive the event.
I need to update data when my event is sent into any portlet even if they are visible or not
portlet.xml (publish) :
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app ...>
<portlet>
...
<init-param>
<name>javax.portlet.faces.autoDispatchEvents</name>
<value>true</value>
</init-param>
...
<supported-publishing-event>
<qname xmlns:s2eevt="urn:fr:s2e:web:front:event">s2eevt:EvtPortletMAJDonneesPerso</qname>
</supported-publishing-event>
</portlet>
<event-definition>
<qname xmlns:s2eevt="urn:fr:s2e:web:front:event">s2eevt:EvtPortletMAJDonneesPerso</qname>
<value-type>fr.s2e.web.front.portlet.synchro.EvtPortletMAJDonneesPerso</value-type>
</event-definition>
</portlet-app>
portlet.xml (suscribe)
<portlet-app ...>
<portlet>
...
<init-param>
<name>javax.portlet.faces.bridgeEventHandler</name>
<value>fr.s2e.web.front.portlet.synchro.MAJEvtHandler</value>
</init-param>
<init-param>
<name>javax.portlet.faces.autoDispatchEvents</name>
<value>true</value>
</init-param>
...
<supported-processing-event>
<qname xmlns:s2eevt="urn:fr:s2e:web:front:event">s2eevt:EvtPortletMAJDonneesPerso</qname>
</supported-processing-event>
</portlet>
<event-definition>
<qname xmlns:s2eevt="urn:fr:s2e:web:front:event">s2eevt:EvtPortletMAJDonneesPerso</qname>
<value-type>fr.s2e.web.front.portlet.synchro.EvtPortletMAJDonneesPerso</value-type>
</event-definition>
</portlet-app>
send the event :
FacesContext fc = FacesContext.getCurrentInstance();
if (fc != null) {
ExternalContext extCtx = fc.getExternalContext();
Object response = extCtx.getResponse();
if (StateAwareResponse.class.isAssignableFrom(response.getClass())) {
StateAwareResponse preponse = (StateAwareResponse)response;
preponse.setEvent(evt.getQname(), evt);
}
}
Handler
public class MAJEvtHandler implements BridgeEventHandler {
public EventNavigationResult handleEvent(FacesContext ctx, Event evt) {
//event processing
return null;
}
}
Gatein 3.2.4 (eXo 3.5.3), RF4.2.3.Final, JSF 2.1.8, PB 3.1.0.Final