We have run a small test based on booking-portlet-faces sample with RichFaces/Ajax4Jsf components added.
As expected, AJAX request URLs (generated by <a4j> tags) were rendered as portlet action URLs (which is wrong as discussed earlier).
Additional problem with RichFaces is that there is no way to set up org.ajax4jsf.Filter, since it is servlet filter, but all SWF requests go through DispatcherPortlet (we added org.ajax4jsf.Filter to web.xml without meaningful mapping just to initialize A4J environment.) Seems that because of this RichFaces AJAX components were not active.
Concerning AJAX requests, SWF - Portlet support should be improved like this:
1.org.springframework.webflow.context.portlet.FlowUrlHandler abstraction should be extended with
method createFlowExecutionResourceUrl() (in addition to createFlowExecutionUrl()). This method would
produce portlet resource URL.
2.Ensure that SWF provided faces ViewHandler (e.g. PortletFaceletViewHandler) effectively use createFlowExecutionResourceUrl()
for rendering JSF AJAX URLs.
3.org.springframework.webflow.mvc.portlet.FlowHandlerAdapter should handle portlet resource request in the same way as action requests.
4.Maybe portlet enviromnet needs AjaxHandler abstraction and logic based on it, as has servlet environment; then it should be added
to org.springframework.webflow.mvc.portlet.FlowHandlerAdapter and related classes.
Concerning RichFaces support
1.Open question how configure org.ajax4jsf.Filter for DispatcherPortlet. (Maybe port/adapt it to portlet filter?)
2.RichFacesAjaxHandler for portlet environment maybe needed (see above).
By the way , JSF portlet with RichFaces and JBoss portlet bridge employs portlet resource URLs for <a4j> requests.
Also in that setup bridge portlet delegates to FacesServlet, and org.ajax4jsf.Filter is mapped on that servlet.