Hello,

I use a custom "faces-context-factory" in my faces-config.xml  :
        <factory>
  |             
<faces-context-factory>com.labosun.portal.myfaces.context.PortletFacesContextFactory</faces-context-factory>
  |     </factory>

FacesContextImpl :

package com.labosun.portal.myfaces.context;
  | 
  | import java.util.Iterator;
  | import java.util.Set;
  | 
  | import javax.faces.context.ExternalContext;
  | import javax.portlet.PortletContext;
  | import javax.portlet.PortletRequest;
  | import javax.portlet.PortletResponse;
  | 
  | import org.apache.commons.logging.Log;
  | import org.apache.commons.logging.LogFactory;
  | import org.apache.myfaces.context.ReleaseableExternalContext;
  | import org.apache.myfaces.context.servlet.ServletFacesContextImpl;
  | 
  | public class PortletFacesContextImpl extends ServletFacesContextImpl {
  | 
  |     private final static Log logger = LogFactory
  |                     .getLog(PortletFacesContextImpl.class);
  | 
  |     public PortletFacesContextImpl(PortletContext ctx, PortletRequest 
request,
  |                     PortletResponse response) {
  |             super(ctx, request, response);
  |     }
  | 
  |     public void setExternalContext(ReleaseableExternalContext context) {
  |             ExternalContext extNew = (ExternalContext) context;
  | 
  |             // update new external context
  |             Set keySet = getExternalContext().getRequestMap().keySet();
  |             Iterator keySetIt = keySet.iterator();
  |             while (keySetIt.hasNext()) {
  |                     String att = (String) keySetIt.next();
  |                     if (extNew.getRequestMap().get(att) == null) {
  |                             extNew.getRequestMap().put(att,
  |                                             
getExternalContext().getRequestMap().get(att));
  |                     }
  |             }
  |             super.setExternalContext(context);
  |     }
  | }
  | 

package com.labosun.portal.myfaces.context;
  | 
  | import javax.faces.FacesException;
  | import javax.faces.context.FacesContext;
  | import javax.faces.context.FacesContextFactory;
  | import javax.faces.lifecycle.Lifecycle;
  | import javax.portlet.PortletContext;
  | import javax.portlet.PortletRequest;
  | import javax.portlet.PortletResponse;
  | 
  | public class PortletFacesContextFactoryImpl extends FacesContextFactory {
  | 
  |     public FacesContext getFacesContext(Object context, Object request,
  |                     Object response, Lifecycle lifecycle) throws 
FacesException {
  | 
  |             if (context == null) {
  |                     throw new NullPointerException("context");
  |             }
  |             if (request == null) {
  |                     throw new NullPointerException("request");
  |             }
  |             if (response == null) {
  |                     throw new NullPointerException("response");
  |             }
  |             if (lifecycle == null) {
  |                     throw new NullPointerException("lifecycle");
  |             }
  | 
  |             return new PortletFacesContextImpl((PortletContext) context,
  |                             (PortletRequest) request, (PortletResponse) 
response);
  |     }
  | 
  | }
  | 

It works .it! but it may have some troubles if you have many portlets which 
uses MyFaces in one page ... (maybe ... I have no problem but I didn't test 
a lot !


Good luck !

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985477#3985477

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985477
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to