James, i did an upload for servlet2.3 http://issues.apache.org/bugzilla/show_bug.cgi?id=29809
see patch-file http://issues.apache.org/bugzilla/showattachment.cgi?attach_id=11956 .. Matthias > -----Original Message----- > From: James Holmes [mailto:[EMAIL PROTECTED] > Sent: Tuesday, June 29, 2004 3:29 PM > To: 'Struts Developers List' > Subject: RE: [Struts-Faces] wrapping a HttpServletRequest > > > Matthias, > > Did you see Ted's note attached to your Bugzilla ticket for > Struts-Faces? He wants the code to work with the previous > version of the servlet spec. > > -James > > -----Original Message----- > From: Matthias Wessendorf [mailto:[EMAIL PROTECTED] > Sent: Friday, June 25, 2004 12:19 PM > To: 'Struts Developers List' > Subject: RE: [Struts-Faces] wrapping a HttpServletRequest > > One i missed to mention, > > this *solution* is not bound to MyFaces, > it works also with the RI shipped by Sun... > > :-) > Cheers, > > > -----Original Message----- > > From: Matthias Wessendorf [mailto:[EMAIL PROTECTED] > > Sent: Thursday, June 24, 2004 7:50 PM > > To: [EMAIL PROTECTED]; [EMAIL PROTECTED] > > Subject: [Struts-Faces] wrapping a HttpServletRequest > > > > > > Hi, i tried the faces-struts-lib with RI. > > It works. > > > > But not with Open-Source-Implementation *MyFaces*. > > i notices, that in struts-faces the servletPath is > > a *.do (or that for struts). > > > > But it must be an faces-mapping for servlet-Path > > (*.faces e.g.) > > the FacesRequestProcessor know if request is for > ActionSerclet or not. > > > > If not, it delegates it to JSF-Impl. > > Base of checking is a URI, that is configed > > in <forward name="success" path="/test.faces"/> (e.g.) > > > > so i wrote a simple HttpServletRequestWrapper > > which wrappes the uri as new ServletPath. > > now everything is fine. > > > > like this (in FacesRequesProcessor) > > <code> > > FacesContextFactory fcf = (FacesContextFactory) > > > > FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); > > > > HttpServletRequestWrapper wrapper = new > > HttpServletRequestWrapper(request,uri); > > > > > > context = > fcf.getFacesContext(servlet.getServletContext(), > > wrapper, > > response, lifecycle); > > </code> > > it is not an error in myfaces-impl. > > it is an bug in the RI. > > > > please see the email of Ted Husted (on myfaces-list) > > <ted> > > > > On Wed, 23 Jun 2004 20:21:49 -0700, > > [EMAIL PROTECTED] wrote: > > > the MyFaces implementation is correct in this aspect and I > > don't think > > > > > we should clone the bugs of the RI just because struts > > relies on them. > > > > > I hope spec-compliant does not mean we have to have the > > same bugs the > > > RI has ;-)? By the way, if the RI is fixed, struts will not > > work there > > > > > any longer, too. > > > > The RI and Struts-Faces were created in tandem, so it's not > > surprising the same assumptions crop up in each. But, no, > > specification-compliant does not mean that we should rely on > > bugs in any implementation, including the RI. In fact, the > > Struts tradition has been to expose bugs in implementations > > so that vendors are compelled to fix them. > > > > If you develop any patches you would like applied, please > > bring them to my attention. Once we can get 1.2.1 > > out-the-door (could be this week), we will be setting up > > several subprojects, including Struts-Faces, that can be > > released separately. > > > > > So the clean solution from my point of view is to fix the > issue in > > > struts. For example it would be possible to wrap the > > servlet request > > > before the FacesContext is created. The wrapper takes the > > uri of the > > > view to be displayed to simulate a valid jsf servlet path > > for the view > > > > > manager. What do you think? > > > > > > Oliver > > > > </ted> > > > > > > and here is the simple wrapper-class: > > i can apply a patch, but on that i will > > do a bit better documentation of that > > wrapper-class > > > > > > Cheers, > > Matthias > > > > /* > > * Copyright 2002,2004 The Apache Software Foundation. > > * > > * Licensed under the Apache License, Version 2.0 (the "License"); > > * you may not use this file except in compliance with the License. > > * You may obtain a copy of the License at > > * > > * http://www.apache.org/licenses/LICENSE-2.0 > > * > > * Unless required by applicable law or agreed to in > writing, software > > * distributed under the License is distributed on an "AS IS" BASIS, > > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either > > express or implied. > > * See the License for the specific language governing > permissions and > > * limitations under the License. > > */ > > package org.apache.struts.faces.util; > > > > import java.io.BufferedReader; > > import java.io.IOException; > > import java.io.UnsupportedEncodingException; > > import java.security.Principal; > > import java.util.Enumeration; > > import java.util.Locale; > > import java.util.Map; > > > > import javax.servlet.RequestDispatcher; > > import javax.servlet.ServletInputStream; > > import javax.servlet.http.Cookie; > > import javax.servlet.http.HttpServletRequest; > > import javax.servlet.http.HttpSession; > > > > /** > > * <p>Concrete implementation of > <code>HttpServletRequest</code> that > > * that wrapps the <code>ServletPath</code> with an URI, that > > was detected > > * by <code>ActionServlet</code> to forward to a standard > > <code>FacesServlet</code>. > > * > > */ > > public class HttpServletRequestWrapper implements > HttpServletRequest { > > > > // ------------------------------------------------------ > > Instance Variables > > > > protected HttpServletRequest original = null; > > protected String servletPath = null; > > > > // ------------------------------------------------------------ > > Constructors > > > > > > /** > > * <p>Construct a new <code>HttpServletRequest</code> instance > > * and an URI, which is used by <code>FacesServlet</code>.</p> > > * > > * @param request Original default > > <code>HttpServletRequest</code> > > * > > * @param servletPat the new ServletPath for a > > <code>FacesServlet</code> > > * > > */ > > > > public HttpServletRequestWrapper(HttpServletRequest > > request, String servletPath){ > > this.original = request; > > this.servletPath = servletPath; > > } > > > > // ---------------------------------------------------------- > > Public Methods > > > > > > /** > > * <p>Returns the new <code>ServletPath</code> needed > > by a FacesServlet.</p> > > * > > */ > > public String getServletPath() { > > // TODO Auto-generated method stub > > return this.servletPath; > > } > > > > // ---------------------------------------------------------- > > Delegate Methods > > > > > > /* (non-Javadoc) > > * @see java.lang.Object#equals(java.lang.Object) > > */ > > public boolean equals(Object arg0) { > > return original.equals(arg0); > > } > > > > ... > > } > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]