[jboss-user] [JBoss Portal] - Re: Bug or not ? (request attributes lost)
cyril.joui@supinfo.com
do-not-reply at jboss.com
Mon Nov 13 10:41:43 EST 2006
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
More information about the jboss-user
mailing list